История изменений
Исправление 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
.
- Как получить аргументы командной строки, переданные скрипту?
Обращаешься к массиву строк в переменной @*ARGS.
- Меньше ли места занимает программа в ОЗУ, если использовать переменные с фиксированным типом (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
.
- Как получить аргументы командной строки, переданные скрипту?
Обращаешься к массиву строк в переменной @*ARGS.
- Меньше ли места занимает программа в ОЗУ, если использовать переменные с фиксированным типом (Str, Num) вместо переменных с «плавающим» типом (не знаю, как правильно назвать), которые были единственными в Perl и если да, то насколько?
Нет. Ради памяти это вообще не самый подходящий язык, тут динамики выше крыши, JIT, рантаймовые оптимизации и всё это не бесплатное. GC делает свою работу и жить можно, но если нужно считать байты памяти и экономить на спичках, то это не тот профиль.