Gibt es eine Möglichkeit, Daten in ein Perl-Skript einzubetten und später als temporäre Datei zu verwenden / lesen, ähnlich wie bei der C-Shell.
cat<< eof>tmp.txt
store a multiline text file
eof
run_some_function on [anotherexternalfile] with [tmp.txt]
rm tmp.txt
Ich möchte mehrere Befehls- / Datendateien in ein Perl-Skript einbetten, um eine Reihe von Befehlen zusammenzufassen, damit nicht eine Vielzahl externer Befehlsdateien erforderlich ist.
Aktualisieren
Die eingebettete Datei / die eingebetteten Daten müssen als Eingabedatei für eine andere ausführbare Funktion gelesen werden (siehe unten).
system("executable.exe [anotherexternalfile] [tmp.txt]");
Antworten:
1 für die Antwort № 1Sie heißen hier-docsund sie werden von Perl unterstützt.
print <<"__EOI__";
foo
bar
__EOI__
my $x = <<"__EOI__";
foo
bar
__EOI__
for (<<"__EOI__", <<"__EOI__")
foo
bar
__EOI__
abc
def
__EOI__
{
print;
}
4 für die Antwort № 2
Wie ich es verstehe, perl
hat die DATA
handle, in dem Sie die zu verwendenden Daten aus dem Skript speichern können. Diesen Weg:
#!/usr/bin/env perl
while ( <DATA> ) {
## Work with this data as if you were reading it from an external file.
}
__DATA__
some data
more data
and more...
2 für die Antwort № 3
Perl hat "hier Dokumente" http://perl.about.com/od/perltutorials/qt/perlheredoc.htm. Und natürlich kann Perl externe Befehle genauso ausführen wie eine Shell: http://www.perlhowto.com/executing_external_commands
0 für die Antwort № 4
Gemäß den Vorschlägen von user1937198:
my @cmds = (
"cmd1 arg1 arg2",
"cmd2 arg1 > somefile",
);
for my $cmd (@cmds) {
system($cmd);
}
Als vollständigere Antwort auf das Here-Doc:
my $cmds = <<CMDS;
cmd1 arg1 arg2
cmd2 arg1 > somefile
CMDS
for my $cmd (split("n", $cmds)) {
system("$cmd");
}