2016-08-15 10 views
-3

で三項演算子を使用しながら、各要素 2 .. 1を二重引用符を...下の私のコードが生成されません何らかの理由で 要素の間にコンマを入れて正しい形式エラー、私は次の形式を持つ配列印刷しようとしているperlの

my @new_arr = (0 .. 5); 
my $new_str = ""; 

for my $index (0 .. $#new_arr) 
{ 
    print "$index .. $new_arr[$index]\n"; 
    ($index == $#new_arr) ? $new_str.= "+\"$new_arr[$index]\"":$new_str.=  "\"$new_arr[$index]\"\,"; 

} 
print "$new_str \n"; 
+2

'$ perl -wE 'join("、 "$ _"}} 0 .. 5)' ' –

答えて

1
$new_str = q{"} . join(q{","}, @new_arr) . q{"}; 

例:

@new_arr = (0..5); 
$new_str = q{"} . join(q{","}, @new_arr) . q{"}; 
print $new_str,"\n"; 

出力:

"0","1","2","3","4","5" 

perl -MO=Deparse,-p ...あなたの元のコードに問題があることを示しています

すなわち
$ perl -MO=Deparse,-p ternary.pl 
(@a = (0..5)); 
foreach my($index) (0 .. $#a) { 
    print("$index .. $new_arr[$index]\n"); 
    ((($index == $#a) ? ($new_str .= qq[+"$a[$index]"]) : $new_str) .= qq["$a[$index]",]); 
} 
print("$new_str \n"); 

、三元式の.=事業者が正しくグループ化されていないこと。あなたは適切に括弧を使用することによって、それを救うことができます:

($index == $#new_arr) ? ($new_str.= "+\"$new_arr[$index]\""):($new_str.=  "\"$new_arr[$index]\"\,"); 

または$new_str .=

三式の各辺のうち
$new_str .= $index == $#new_arr ? "+\"$new_arr[$index]\"" : "\"$new_arr[$index]\"\,"; 

を引っ張っするが、最終的にこれはPerlの組み込みjoin機能のために良いユースケースです。

+3

これを[クリーナー](http:// stackoverflow.com/questions/38963507/error-while-using-ternary-operator-in-perl#comment65283784_38963507)? –

0
$ perl -wE 'say join(",", map { qq{"$_"} } 0 .. 5)' 

出力:

"0","1","2","3","4","5" 

初期mapは、二重引用符を追加し、joinは、新たに二重引用符で囲まれたリストの要素から、カンマ区切りの文字列を作成します。二重引用符を含む補間された文字列が必要なので、ここではqqを使用する必要があります。

関連する問題