
저는 펄을 처음 접했습니다. 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.
답변1
괄호를 잊으셨나요?
open my $cmd, '<:encoding(UTF-8)', $file or die;
에게
open (my $cmd, '<:encoding(UTF-8)', $file) or die;
답변2
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;
}