Вы забыли скобки?
open my $cmd, '<:encoding(UTF-8)', $file or die;
в
open (my $cmd, '<:encoding(UTF-8)', $file) or die;
Я новичок в Perl. Я пишу ниже сценарий для печати информации о времени загрузки системы из команды Windows systeminfo
. Здесь выглядят некоторые проблемы. Я получаю вывод, как это.
Может ли кто-нибудь помочь мне
use strict; use warnings; my $filename = 'sysinfo.txt'; my @cmdout = `systeminfo`; open(my $cmd, '>', $filename) or die "Could not open file '$filename' $!"; print $cmd @cmdout; foreach my $file (@cmdout) { open my $cmd, '<:encoding(UTF-8)', $file or die; while (my $line = <$cmd>) { if ($line =~ m/.*System Boot.*/i) { print $line; } } }
Выход:
Died at perl_sysboottime.pl line 8.
Вы забыли скобки?
open my $cmd, '<:encoding(UTF-8)', $file or die;
в
open (my $cmd, '<:encoding(UTF-8)', $file) or die;
Вы пытаетесь открыть каждую строку, заданную командой systeminfo. Это не файлы, а строки информации.
Пересмотренная версия вашего скрипта может быть:
use strict; use warnings; my @cmdout = `systeminfo`; foreach my $line (@cmdout) { print $line if $line =~ /System Boot/i; }
или, если вы хотите сохранить данные в $filename
use strict; use warnings; my $filename = 'sysinfo.txt'; my @cmdout = `systeminfo`; open(my $cmd, '>', $filename) or die "Could not open file '$filename' $!"; print $cmd @cmdout; foreach my $line (@cmdout) { print $cmd $line if $line =~ /System Boot/i; }