LINUX.ORG.RU

История изменений

Исправление Lilly, (текущая версия) :

shell даёт тебе объект запущенного процесса, у которого можно спросить exitcode, pid, in/out/err и всё остальное, поэтому присвоение в Str явно не работает. Как записать только вывод:

my $mktemp-proc = shell 'mktemp', :out;
my $output-returned = $mktemp-proc.out.slurp(:close);

(ну или с явными скобками и именованным параметром так, суть одинаковая:)

my $mktemp-proc = shell('mktemp', out => True);
my $output-returned = $mktemp-proc.out.slurp(:close);

Где именованный параметр out у shell включает запись stdout, после чего берёшь этот объект, обращаешься к его методу out, который даёт тебе IO::Pipe, т.е. поток ввода-вывода, и slurp-ишь всё его содержимое ради всего святого с параметром :close.

  1. Как получить аргументы командной строки, переданные скрипту?

Обращаешься к массиву строк в переменной @*ARGS.

  1. Меньше ли места занимает программа в ОЗУ, если использовать переменные с фиксированным типом (Str, Num) вместо переменных с «плавающим» типом (не знаю, как правильно назвать), которые были единственными в Perl и если да, то насколько?

Нет. Ради памяти это вообще не самый подходящий язык, тут динамики выше крыши, JIT, рантаймовые оптимизации и всё это не бесплатное. GC делает свою работу и жить можно, но если нужно считать байты памяти и экономить на спичках, то это не тот профиль.

Исходная версия Lilly, :

shell даёт тебе объект запущенного процесса, у которого можно спросить exitcode, pid, in/out/err и всё остальное, поэтому присвоение в Str явно не работает. Как записать только вывод:

my $mktemp-proc = shell 'mktemp', :out;
my $output-returned = $mktemp-proc.out.slurp(:close);

Где именованный параметр out у shell включает запись stdout, после чего берёшь этот объект, обращаешься к его методу out, который даёт тебе IO::Pipe, т.е. поток ввода-вывода, и slurp-ишь всё его содержимое ради всего святого с параметром :close.

  1. Как получить аргументы командной строки, переданные скрипту?

Обращаешься к массиву строк в переменной @*ARGS.

  1. Меньше ли места занимает программа в ОЗУ, если использовать переменные с фиксированным типом (Str, Num) вместо переменных с «плавающим» типом (не знаю, как правильно назвать), которые были единственными в Perl и если да, то насколько?

Нет. Ради памяти это вообще не самый подходящий язык, тут динамики выше крыши, JIT, рантаймовые оптимизации и всё это не бесплатное. GC делает свою работу и жить можно, но если нужно считать байты памяти и экономить на спичках, то это не тот профиль.