2012-04-11 2 views
3

ファイルを配列にロードします(配列要素のすべての行)。 配列要素を処理して新しいファイルに保存します。 私は、新しいファイルを印刷したい:Perlプリントはすべての要素の先頭のスペースを示します

print ("Array: @myArray"); 

しかし - それは、すべての行の先頭のスペースでそれらを示しています。 先行スペースなしで配列を印刷する簡単な方法はありますか?

+0

れる大きな疑問:あなたはあなたの全体をロードする必要がありますかファイルを配列に入れますか?通常は、各行を別々に処理して印刷する方が効率的です。行がお互いに依存する場合(ソートやカウントなど)には、行を保存してから印刷する必要があります。 – TLP

答えて

4

Matt Fenwickは正しいです。あなたの配列が二重引用符で囲まれている場合、Perlは要素間に$"(デフォルトではスペース; the perlvar manpage参照)の値を入れます。あなただけの引用符の外にそれを置くことができます:あなたが例えばカンマで区切られた要素をしたい場合は

print ('Array: ', @myArray); 

は、変更output field separator

use English '-no_match_vars'; 
$OUTPUT_FIELD_SEPARATOR = ',';  # or "\n" etc. 
print ('Array: ', @myArray); 
+2

最後の文章で何を表現したいかわからないので、明確にしてください。 – daxim

+0

私は、英文を使用して、わかりにくい変数名を避けるように言いました。 – Konerak

+0

改善のために編集されました。 – daxim

6

はい - joinを使用します。

my $delimiter = ''; # empty string 

my $string = join($delimiter, @myArray); 

print "Array: $string"; 
+1

あなたの結合ステートメントは冗長です。 'print '配列:"、@myArray; 'は、メモリを大量に消費する可能性のある変数の別のコピーを作成せずに全く同じことを行います。 – TLP

関連する問題