2017-02-12 3 views
1

Für Eingabe abc, der Code

perl -ne 'print "XYZ$_"' 

Drucke XYZabc, aber nach der Reihenfolge der $_ und XYZ Schalten, d.h.

perl -ne 'print "$_XYZ"' 

druckt nichts. Warum?

+2

'Verwendung stric t; 'hätte Ihnen hier eine sinnvolle Fehlermeldung gegeben, anstatt einfach" nichts zu geben " – Dre

+1

Vermutlich haben Sie keine Variable mit dem Namen' $ _XYZ' :-) –

Antwort

6

XYZ kann Teil eines Variablenname sein, so $_XYZ ist ein Variablenname, anstatt $_ durch eine wörtliche XYZ gefolgt.

Sie können die Zeichenfolge aufgeteilt:

perl -ne 'print $_ . "XYZ"' 
+2

Oder '$ {_} XYZ', das kann oder vielleicht nicht klarer –

+2

oder 'print $ _," XYZ "' oder 'printf"% sXYZ ", $ _' etc. – choroba

+0

was ich versuche zu erreichen, ist es, einige Zeichen in jeder Zeile der Textdatei hinzuzufügen . Der Code 'perl -ne 'print" XYZ $ _ "' $ neuerDateiname.txt> $ neuerDateiname-XYZ.txt'' funktioniert perfekt, um am Anfang hinzuzufügen, aber die oben genannten Lösungen am Ende hinzufügen funktionieren nicht –

4

Perl Identifikatoren alle Buchstaben, Ziffern enthalten oder unterstreichen, so dass Sie Perl fragen den Wert der Variablen $_XYZ zu drucken, die nicht

existiert

Sie können den Namen der variablen mit Klammern { ... } umgeben sie von allen umgebenden Zeichen zu trennen, wie so

perl -ne 'print "${_}XYZ"' 
Verwandte Themen