Wie kann ich eval environment-Variablen in Perl?

Ich würde gerne bewerten, eine Umgebungsvariable und legen Sie das Ergebnis einer Variablen zu:

$x=eval($ENV{EDITOR});
print $x;

Ausgänge:

/bin/vi

funktioniert einwandfrei.

Wenn ich eine Umgebungsvariable festlegen, ZITAT \ " und versuchen, die gleiche Sache:

$x=eval($ENV{QUOTE});
print $x;

Ausgänge:

(nichts)

$@ set to: "Can't find a string terminator anywhere before ..."

Ich möchte nicht einfach eingestellt $x=$ENV{QUOTE}; als die eval wird auch benutzt, um ein Skript aufrufen und wieder in seine letzten Wert (sehr praktisch), so würde ich mag zu halten mit den eval(); Beachten Sie, dass alle Environment-Variablen eval ' ed auf diese Weise werden von mir in einem anderen Ort, so bin ich nicht besorgt mit bösartigen Zugriff zu den environment-Variablen eval-ed-auf diese Weise.

Vorschläge?

  • Was sind Sie wirklich erreichen wollen? Diese Frage stellen und vielleicht können wir Ihnen besser helfen. 🙂
  • Nicht blind eval %ENV user input; das ist unglaublich gefährlich. eval ruft den perl-interpreter und %ENV sind schon gültig, perl-Skalare. Es wird nicht alles tun, am besten, und kann zu großen Schäden im schlimmsten Fall. Kann jeder code in EDITOR, um korrupte Ihr system oder zerstören von sensiblen Daten, die Ihnen oder nicht.
  • Ehrlich, dass ist die Frage, die ich Wünsche, zu Fragen. Ich kontrolliere den Wert der environment-Variablen in diesem Prozess verwendet (damit bin ich nicht blind der Bewertung der Umgebung, da war es früher Satz von "mir"). Ich muss eval viele verschiedene Dinge, und das ist nur eine. Ich glaube, dass ich über eine angemessene Antwort. Thx
  • Warum sind Sie den Aufruf von eval() auf diese? Was denkst du, was eval() macht?
InformationsquelleAutor Jeff Hutton | 2009-03-19
Schreibe einen Kommentar