2009-06-03 28 views

cevap

31

Çift tırnak değişken genişleme kullanmak "(\\" kullanın. Tek tırnak bir de değil

do çift ​​tırnaklı dizgeden farklı yorumlanmaları için belirli karakterlerden kaçmanız gerekir. (Dizedeki son karakter ise bir ters eğik çizgi hariç) tek tırnaklı dizge içinde değil mi

my $var1 = 'Hello'; 

my $var2 = "$var1"; 
my $var3 = '$var1'; 

print $var2; 
print "\n"; 
print $var3; 
print "\n"; 

çıktısı verir Perl Monks bu oldukça iyi bir açıklaması var

Hello 
$var1 

here

+0

'' (1 karakterden ve çift tırnaktan oluşur) '' ('' 2 karakterden oluşur? '' ( – chappar

+6

Hayır, bunun tersi olur. '2 karakter, ve' \\ ('dir. –

+1

Sınırlayıcı karakterin de ters eğik olması ve dizenin son karakteri olarak diğer çeşitli durumlarda ters eğik çizgi (örneğin, iki karakter dizgisi \' dir '\\\) '', '', '' değil '' – ysth

3

Çift tırnak işareti

"değişkenleri çözmek ve karakterlerden kurtulmak olacak yorumlamak ve tek tırnak

+0

gibi şeyler söyleyebilmeniz gerekir. Bu fikir doğrudur, ancak değişken adı olarak 42isanumber kullanamazsınız. –

4

'değişkenleri ortadan kaldırmayacağını yoktur ve kaçar.

Eğer \ karakterini saklamak istiyorsanız $ var2 içinde dizesinde,

+3

s/resol/interpolate/ –

1

"" Değişken enterpolasyonu ve kaçmayı destekler. böylece 'olarak "\("\ kaçar (

içeride olduğu gibi' ve çift tırnakla interpolates 'ya desteklemiyor. Yani '\('\(

2

Perl tek tırnakla alır anlamıyla'. araçlarını şunun dahilinde, değişkenleri değişkenler ile değiştirir ve ayrıca kaçan karakterleri anlar. Yani, "\" (')' ('olarak yorumlanır ve regexp'iniz m/(/ olur, bu yüzden Perl şikayet eder.

+0

Tek tırnaklı dizelerde iki çıkış karakterini tanır: bitiş sınırlayıcı karakteri ve \. – ysth

2

regex dizeleri oluşturmak için gerçekten qr// quote-like operator:

kullanmalısınız
my $matchStr = "("; 
my $var1 = qr/\(/; 
my $res1 = ($matchStr =~ m/$var1/); 

Sadece değişken içeren bir dize kullanmaktan çok daha hızlı bir derlenmiş bir regex oluşturur. Ayrıca bir regex bağlamında kullanılmadığı takdirde bir dize döndürecektir, bu nedenle

print "$var1\n"; #prints (?-xism:\() 
+0

OP, Quotelike operatörlerinde perlop bölümlerini okumak isteyebilir: http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators – daotoad

+1

@daotoad Cevaptaki bağlantıyı beğenmek mi istiyorsunuz? –

İlgili konular