Если вы хотите записать переменную $time
в текстовый файл, open
записываемый файловый дескриптор и распечатать его в свой файл.
open(my $outfile, '>', 'new.txt');
print $outfile $time;
...
Во-вторых, ваше перенаправление вывода должно выглядеть так:
1>>new.txt 2>&1
Что означает «добавить STDOUT (1) в new.txt, перенаправить STDERR (2) в STDOUT (1)». Наличие >>
не имеет смысла для второй части.
Наконец, я (и любой другой программист на Perl) настоятельно рекомендую использовать в своих скриптах прагмы strict
и warnings
. Это поможет вам выявить любые ошибки или потенциальные проблемы в сценариях. После того, как вы это сделаете, все переменные должны быть объявлены с my
, что является хорошей привычкой в любом случае. Итак, после всего этого ваш скрипт должен выглядеть примерно так:
# recommended pragmas:
use strict;
use warnings;
# declare all new variables with "my"
my $cmd="echo hi";
my ($second, $minute, $hour) = localtime();
my $time="$hour:$minute:$second";
# open a writeable filehandle and print to the filehandle
open(my $outfile, '>', 'new.txt');
print $outfile $time,"\n"; # I've added a newline character here so that
# the time and the command's output are on different lines ;)
system("$cmd 1>>new.txt 2>&1");