2012-04-11 14 views
3

Ich lade eine Datei in ein Array (jede Zeile in Array-Element). Ich verarbeite die Array-Elemente und speichere sie in einer neuen Datei. Ich mag die neue Datei auszudrucken:Perl drucken zeigt führende Leerzeichen für jedes Element

print ("Array: @myArray"); 

Aber - es zeigt sich mit führenden Leerzeichen in jeder Zeile. Gibt es eine einfache Möglichkeit, das Array ohne führende Leerzeichen auszudrucken?

+0

Die größere Frage ist: Haben Sie Ihre gesamte laden müssen Datei in ein Array? In der Regel ist es effizienter, jede Zeile einzeln zu verarbeiten und zu drucken, und nur in den Fällen, in denen die Zeilen voneinander abhängig sind (z. B. beim Sortieren oder Zählen), müssen die Zeilen vor dem Drucken gespeichert werden. – TLP

Antwort

4

Matt Fenwick korrekt ist. Wenn Ihr Array in doppelte Anführungszeichen gesetzt ist, wird Perl den Wert $" (der standardmäßig ein Leerzeichen ist; siehe the perlvar manpage) zwischen den Elementen angeben. Sie können es nur außerhalb der Anführungszeichen:

print ('Array: ', @myArray); 

Wenn Sie die Elemente beispielsweise durch ein Komma getrennt möchten, die ändern output field separator:

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

Ich habe keine Ahnung was du mit dem letzten Satz ausdrücken willst, bitte klar. – daxim

+0

Ich bezog mich auf 'English verwenden', um die kryptischen Variablennamen zu vermeiden. – Konerak

+0

Editiert, um es zu verbessern. – daxim

6

Ja - verwenden join:

my $delimiter = ''; # empty string 

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

print "Array: $string"; 
+1

Ihre Join-Anweisung ist redundant. 'print" Array: ", @myArray;' wird genau dasselbe tun, ohne dass Sie gezwungen sind, eine weitere Kopie einer potenziell speicherintensiven Variablen zu erstellen. – TLP

Verwandte Themen