쓰기 용 파일 (>
)을 열고 읽기 용 파일 (+
)을 개선했습니다. 파일을 열면 파일 핸들러에서 읽고 읽은 것을 기본 파일 핸들 (STDOUT
)으로 인쇄합니다. 작업이 끝나면 파일을 닫습니다.
파일이 없으면 파일을 만들고 읽을 내용이 없으며 아무 것도 인쇄되지 않으며 여전히 비어있는 파일을 닫습니다.
나는 당신이하려는 것을 모른다. 파일에 행을 추가하려는 경우 대신 파일을 열어 추가 할 수 있습니다 (>>
).
#!/usr/bin/perl
use strict;
use warnings;
my @alpha = ("aa".."ab");
for my $combo (@alpha) {
open my $fh, ">>", $combo or die "die open failed: $!";
printf $fh "[%s] Here's a new line in $combo\n", scalar localtime;
}
이 같은 출력 파일을 생성합니다 : 당신이하려고하는 경우
[Fri Feb 24 09:07:17 2012] Here's a new line in aa
[Fri Feb 24 09:08:52 2012] Here's a new line in aa
당신이 핸들에 인쇄 할 때, 당신은 당신이 사용하고자하는 파일 핸들 print
말할 필요 (당신이 티를 언급했기 때문에) 파일과 표준 출력으로 동시에 출력하면, 하나 이상의 다른 파일 핸들에 멀티 플렉스하는 파일 핸들을 생성 할 수 있습니다. IO::Tee는 당신을 위해 작업을 수행 할 수 있습니다 스크린과 파일을
#!/usr/bin/perl
use strict;
use warnings;
use IO::Tee; # get from CPAN
my @alpha = ("aa".."ab");
for my $combo (@alpha) {
open my $fh, ">>", $combo or die "die open failed: $!";
my $tee = IO::Tee->new($fh, \*STDOUT);
printf $tee "[%s] Here's a new line in $combo\n", scalar localtime;
}
지금 각 출력 라인이 두 장소로 이동합니다.
왜 ()로 읽고 동일한 줄을 쓰고 있습니까? 당신의 목표는 무엇입니까? –
perreal