/ / perl bettet Daten wie in c shell ein - perl, shell, command, embed

perl einbetten Daten wie in c Shell - Perl, Shell, Befehl, einbetten

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 № 1

Sie 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");
}