Страница 1 из 1

perl one liner parameter sequence

Добавлено: 25 авг 2006, 07:07
Gaziz
Привет,

Подскажите по какой причине результат зависит от того,
в какой последовательности расположены параметры?

gnugmanov@jekyll@~/morespace>echo test | perl -enal 'print "hi\n";'
gnugmanov@jekyll@~/morespace>echo test | perl -lane 'print "hi\n";'
hi

gnugmanov@jekyll@~/morespace>

Re: perl one liner parameter sequence

Добавлено: 25 авг 2006, 09:42
sobomax
Gaziz писал(а):Привет,

Подскажите по какой причине результат зависит от того,
в какой последовательности расположены параметры?

gnugmanov@jekyll@~/morespace>echo test | perl -enal 'print "hi\n";'
gnugmanov@jekyll@~/morespace>echo test | perl -lane 'print "hi\n";'
hi

gnugmanov@jekyll@~/morespace>
$ man perlrun
[...]
-e commandline
may be used to enter one line of program. If -e is given, Perl
will not look for a filename in the argument list. Multiple -e
commands may be given to build up a multi-line script. Make sure
to use semicolons where you would in a normal program.
[...]

Это означает что в первом случае ты пытаешся исполнить скрипт состоящий из одной строки "nal". Странно что оно тебя не послало куда нибудь подальше. ;-)

-Maxim

Добавлено: 25 авг 2006, 20:53
bormo
так и есть.

[root@srv3058 root]# echo test | perl -e'print "hi\n"';
hi

Re: perl one liner parameter sequence

Добавлено: 28 авг 2006, 09:26
Gaziz
sobomax писал(а):
Gaziz писал(а):Привет,

Подскажите по какой причине результат зависит от того,
в какой последовательности расположены параметры?

gnugmanov@jekyll@~/morespace>echo test | perl -enal 'print "hi\n";'
gnugmanov@jekyll@~/morespace>echo test | perl -lane 'print "hi\n";'
hi

gnugmanov@jekyll@~/morespace>
$ man perlrun
[...]
-e commandline
may be used to enter one line of program. If -e is given, Perl
will not look for a filename in the argument list. Multiple -e
commands may be given to build up a multi-line script. Make sure
to use semicolons where you would in a normal program.
[...]

Это означает что в первом случае ты пытаешся исполнить скрипт состоящий из одной строки "nal". Странно что оно тебя не послало куда нибудь подальше. ;-)

-Maxim
Спасибо, понятно. Но не разумно :) Данные на выходе IMHO не должны зависить от перемены места параметров.

Re: perl one liner parameter sequence

Добавлено: 28 авг 2006, 09:54
sobomax
Gaziz писал(а): Спасибо, понятно. Но не разумно :) Данные на выходе IMHO не должны зависить от перемены места параметров.
Huh? По определению есть два типа параметров - параметр с аргументом и параметр без. -e это параметр с аргументом. Все что следует за параметром с аргументом до следующего пробела считается аргументом этого параметра, например:

-a foobar
-afoobar
-a "foo bar"

Учите матчасть в общем. ;-)

-Maxim