2016-11-01 1 views
1

Ich bin für einen kürzeren Weg, um einfache One-offs wie folgen zu schreiben:Perl: Mindestversion in env var angeben?

perl -e 'use 5.016;say 4.3%3' 

oder

perl -e 'print 4.3%3 ."\n"' 

ich für eine Umgebungsvariable hoffte ich, dass wäre das äquivalent gesetzt könnte use 5.016 so konnte ich nur schreiben:

perl -e 'say 4.3%3' 

Vielleicht habe ich etwas in der Dokumentation übersehen?

Antwort

8
perl -E 'say ...'; 

Das ist wie -e aber schaltet alle Funktionen (die say ist einer). Von perldoc/perlrun:

  • -e Command

    kann eine Zeile Programm einzugeben verwendet werden. Wenn -e angegeben wird, sucht Perl nicht nach einem Dateinamen in der Argumentliste. [...]

  • -E Kommandozeile

    verhält sich wie -e, mit der Ausnahme, dass es ermöglicht implizit alle optionalen Funktionen (in der Hauptübersetzungseinheit). Siehe feature.


Um ehrlich zu sein: meine Antwort nicht genau Ihre ursprüngliche Frage beantworten. Sie haben gefragt, wie Sie eine minimale Perl-Version verwenden/benötigen. Für, dass die Lösung in @ThisSuitIsBlackNot ‚s Kommentar gegeben passt besser:

perl -M5.016 -e 'say ...' 

Dies schaltet alle Funktionen, die mit Perl 5.16 und zugleich kam beschwert sich, wenn Ihre Perl-Version kleiner als 5,16 ist. Look here und here für eine wann-kam-welche Tabelle.

Die -E Lösung schaltet blind alle Funktionen Ihrer aktuellen Perl-Version ein.


Sie haben auch nach einer Umgebungsvariablen gefragt. Es gibt indeed one:

export PERL5OPT='-Mstrict -Mwarnings -M5.016' 

Schalter in dieser Variable behandelt werden, als ob sie auf jeder Perl Kommandozeile waren.

Seien Sie vorsichtig, wenn Sie die Umgebungsvariable und den Austausch von Code verwendet: wenn Sie vergessen haben, Ihre Kollegen davon zu erzählen (weil Sie es Monate zuvor in .bashrc gesetzt), dann könnten einige Auszüge für Sie arbeiten, aber nicht für andere .

+0

möchte vielleicht hinzufügen, dass in einem Skript würde man 'verwenden Feature 'sagen';' oder 'verwenden 5.10; 'oder dergleichen – stevieb

Verwandte Themen