2013-10-14 3 views
-1

Как переключатели perl «-E» и «-e» отличаются друг от друга? В этом примере они работает точно так же - выполняет команду после переключения:В чем разница между верхним регистром «-E» и строчным «-e» в perl?

$ perl -e 'print "$_\n" foreach 1..2' 
1 
2 
$ perl -E 'print "$_\n" foreach 1..2' 
1 
2 
+1

Если вы сомневаетесь, 'Perl -h' быстрый способ check-переключатели: -E-like -e, но включает все необязательные функции' – TLP

ответ

7

Это объясняется в perldoc perlrun:

-E командной строки
ведет себя так же, как -e, за исключением того, что он неявно включает все дополнительные функции (в основной части компиляции). См. Функцию.

«См. Функцию». относится к документации для прагмы feature, которую вы можете прочитать, набрав perldoc feature.

2

От Perldoc: http://perldoc.perl.org/perlrun.html

• -e командной строки:

может использоваться для ввода одной строки программы. Если задано -e, Perl не будет искать имя файла в списке аргументов. Для создания многострочного скрипта может быть задано несколько команд. Обязательно используйте точки с запятой, где бы вы были в обычной программе.

• -E командной строки:

ведет себя так же, как -e, за исключением того, что она неявно включает все дополнительные функции (в основном модуле компиляции). См. feature.

4

-E в отличие от -e позволяет features

Вы можете проверить, что они используют Deparse модуль (Ниже для Perl 5.16),

perl -MO=Deparse -E 1 
use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval'; 
+1

Функция 'say' часто используется в командной строке, поэтому' perl -e 'print "$ _ \ n" foreach 1..2'' может быть записано короче, так как 'perl -e 'say foreach 1..2'' –

+1

' -E' во втором – RobEarl

+0

@RobEarl tnx для комментариев, что должен быть 'perl -E 'say foreach 1..2'' –

Смежные вопросы