2012-02-05 10 views
7

@私は次のようなものでperlスクリプトを持っている:のperl エスケープシーケンス

" \"blah\@$string;blah\" " 

しかし、私は\@を行うことになって/何をしているのかわかりません。

私はグーグル「\@」を試しましたが、何も見つかりませんでした。

+0

そうでもない答えを、私は個人的に[「何とか\する@ $文字列QQ 'としてその文字列を記述します。最初の二重引用符をエスケープする必要性を避けるために、 "blah"] ' Perlでは、qq []は ""と同じで、qq []、qq()、qq {}、qq //、qq ^^、qq !!、qq ||などの区切り文字を選択することができます。 。 – zostay

答えて

19

@には、「参照番号$stringを配列参照」ではなく「アットマーク」を意味します。

6

@より前のバックスラッシュは、Perlに文字どおりの処理を指示します。それ以外の場合は、それを配列として扱います。 @の後に$がある場合は、配列参照(配列への参照を保持する文字列)として扱われます。あなたはそれをプリントアウトした場合には、(私がqq||を使用するようにコードを変更した)明確にすることがあります。

my $string = 'i-am-a-string'; 

print qq| "blah\@$string;blah" |; # with backslash 
# "[email protected];blah" 

print qq| "[email protected]$string;blah" |; # no backslash 
# Can't use string ("i-am-a-string") as an ARRAY ref 

$string = [1,2,3]; # string now an array reference 

print qq| "blah\@$string;blah" |; # with backslash 
# "[email protected](0x803bc0);blah" # ARRAY(0x803bc0) is where (1,2,3) lives 

print qq| "[email protected]$string;blah" |; # no backslash 
# "blah1 2 3;blah" 
関連する問題