Perl을 사용하여 파일의 내용을 수정하려고합니다.단일 파일 핸들을 사용하여 파일의 내용을 수정하는 방법
다음 스크립트는 정상적으로 작동합니다.
#!/usr/bin/perl
use strict;
use warnings;
open(FH,"test.txt") || die "not able to open test.txt $!";
open(FH2,">","test_new.txt")|| die "not able to opne test_new.txt $!";
while(my $line = <FH>)
{
$line =~ s/perl/python/i;
print FH2 $line;
}
close(FH);
close(FH2);
test.txt
의 내용 :
im learning perl
im in File handlers chapter
test_new.txt
의 출력 :
im learning python
im in File handlers chapter
내가 파일의 내용을 수정하기위한 동일한 파일 핸들을 사용하려고하면, 난 기대되는 결과를 얻지 못한다. 다음은이 작업을 수행하려고 시도 스크립트 :
#!/usr/bin/perl
use strict;
use warnings;
open(FH,"+<","test.txt") || die "not able to open test.txt $!";
while(my $line = <FH>)
{
$line =~ s/perl/python/i;
print FH $line;
}
close(FH);
test.txt
에서
잘못된 출력 :
im learning perl
im learning python
chapter
chapter
가 어떻게 하나의 파일 핸들을 사용하여 파일의 내용을 수정하는 방법은 무엇입니까? Сухой27 @으로
실제로는 다른 파일에 쓰기를 원할 것입니다.'perl -i -pe 's/perl/python/i'test.txt'도 그런 방식으로 작동합니다. 또는 한 번에 전체 파일을 읽고 변경 한 다음 전체 파일을 동일한 핸들에 다시 쓸 수 있습니다. –
@ Сухой27 명령에서 옵션의 기능을 설명 할 수 있습니까? 즉, -i -pe – kart1657
핸들러가 아닌 파일 ** 핸들 **입니다. – melpomene