Ich habe Dateien, die Header-Format hat beginnt mit> Zeichen. Sagen wir, wenn die Kopfzeile dieses Format hat: '> anything1 | any2', benutze ich dieses Skript, um Header zu trimmen und Ausgabe-Header '> anything1' zu erhalten.Was ändert sich in der Schleife, um die Ausgabe zu erhalten?
while (<>) {
if (/^(>[^|]*)/) {
print "$1\n";
} else {
print;
}
}
Aber jetzt, in meinen Dateien sind einige Header wie diese groß:
>anything1|anything2|anything3 bla bla bla /#
und einige Header sind wie:
>anything1
nun aus diesem gemischten Header-Typ in einer einzigen Datei , wenn ich eine Ausgabe wünsche, die Kopfzeilen bis zu 2 Zeichen für größere Kopfzeilen (das heißt '> anything1 | anything2' für die obige große Kopfzeile) abschneidet und ein Zeichen für die kleinen Kopfzeilen behält (dh '> anything1' nur für die über sm alle Header), welche Änderungen muss ich in meiner Schleife machen?
Dank
Ich weiß nicht, ob ich etwas falsch mache, aber ich führe dein Skript als: perl script.pl Eingabedatei> Ausgabedatei, und es zeigt: Syntaxfehler bei 1.pl Zeile 8, in der Nähe von "sagen Join" Die Ausführung von 1.pl wegen Kompilierungsfehlern abgebrochen –
@ J.Carter Ich vermutete, dass es mehr in Ihrem Skript gibt. Außerdem war ich schlampig mit diesem 'say' - es braucht' verwenden Sie die Funktion qw (say); '. Ich habe es durch 'print' ersetzt. – zdim
Es beunruhigt mich, dass Stack Overflow eine Code-Fabrik für Leute geworden ist, die ihr eigenes Frühstück nicht debuggen konnten. – Borodin