좋아요, 그래서 나는 파일을 여는 방법에 따라 perl에서 grep의 직관적 인 행동을 발견했습니다. 파일을 읽기 전용으로 열면 (<) 작동합니다. 읽기 - 쓰기 (+ <)를 열면 작동하지만, 추가 읽기를 열면 읽지 않습니다. (+ >>)Perl open() grep
이 방법이 효과적 일 수 있지만이 방법이 왜 효과가 있는지 궁금합니다. 누구든지 좋은 설명이 있습니까?
a
b
c
과의 greptest.pl
파일 :
$ ./greptest.pl
Found when opened read
Found when opened write-read
Not found when opened append-read
내가 찾는를 기대했을 것이다 반면 : 그것은 다음 반환 실행
#!/usr/bin/perl
use strict;
use warnings;
open(RFILE, '<', "test.txt")
or die "Read failed: $!";
if(grep /b/, <RFILE>) {print "Found when opened read\n";}
else {print "Not found when opened read\n";}
close RFILE;
open(RWFILE, '+<', "test.txt")
or die "Write-read failed: $!";
if(grep /b/, <RWFILE>) {print "Found when opened write-read\n";}
else {print "Not found when opened write-read\n";}
close RWFILE;
open(AFILE, '+>>', "test.txt")
or die "Append-read failed: $!";
if(grep /b/, <AFILE>) {print "Found when opened append-read\n";}
else {print "Not found when opened append-read\n";}
close AFILE;
의 test.txt
파일을 감안할 때
세 가지 테스트 모두에서.
내 생각에 grep은 파일 포인터를 이후부터 검색하며, 파일 포인터를 추가하면 파일 포인터가 파일 끝으로 설정됩니다. – gcochard
솔직한 추측. 하지만 왜'+ <'는'+ >>'와 다른가? 두 파일 모두 파일 끝에 추가됩니다. –