2014-09-29 24 views
5

Eksik, "eğer":İçiçe Şu anda aşağıdakilere sahip sağ kıvırcık veya köşeli ayraç

elsif ($line =~ /^(\s*)(if|elif|else)\s*(.+)*\s*:\s*$/) { 
    # Multiline If 
    # Print the If/Elif condition 
    if ($2 eq "if"){ 
     print "$1$2 ($3){\n"; 
    } 
    elsif ($2 eq "elif"){ 
     print "$1elsif ($3){\n"; 
    } 
    elsif ($2 eq "else"){ 
     print "$1$2 $3{\n"; 
    } 
    # Add the space before the word "if"/"elif"/"else" to the stack 
    push(@indentation_stack, $1); 

} 

Ben Belirtilen hatası alıyorum, ama neden emin değilim. Son elsif'da, print ifadesindeki { ifadesinden önce bir \ eklerseniz, kod bir hata oluşturmaz.

yani: Bu oluşmasını neden

elsif ($2 eq "else"){ 
     print "$1$2 $3\{\n"; 
    } 

birisi bana açıklayabilir misiniz?

Yardımlarınız için teşekkürler!

cevap

7

Zor!

$3{ 

Sen

"${3}{" 

aşağıdaki eserlerini olarak yazılabilir

$3 . "{" 

eşdeğer istiyorum: Sorun şu karma arama başlangıcı olduğudur Bu durumda \ muhtemelen oradaki değişkenin bir parçası olamaz:

"$3\{" 

Ancak bu numara her zaman kullanılamaz. Eğer

"$foo\bar" 

denerseniz Örneğin, Sen

$foo . chr(0x08) . "ar" 

döner "\b" çünkü "çan" karakterini almak bulacaksınız

$foo . "bar" 

düşünün. Bu, sizi

"${foo}bar" 
+0

ile bırakır. Teşekkür ederim ikegami :) –