정규식과 일치하는 파일 줄을 가져오는 다음보다 더 간단한 방법이 있습니까?
open my $fh, '<', $file or die "Cannot open $file: $!";
while ( my $line = <$fh> ) {
next unless $line =~ m/^foo\/([^\/]+\/?)*==/;
chomp($line);
$line =~ s/==$//g;
$search_result_set{$line} = 1;
}
답변1
@lines = grep s{^foo/([^/]+/?)*\K==\n?\z}{}, <$fh>;
@lines
패턴과 일치하는 행은 뒤따르는 행이 제거된 배열에 저장됩니다 ==\n
. $
제목의 끝과 \n
후행 제목 앞에 오는 내용을 일치시킵니다. 여기서는 개행 문자(있는 경우)를 제거하여 효과적으로 작업을 완료하기 위해 \n?\z
(선택적으로 \n
제목 끝( )이 뒤따름 )을 사용합니다. 교체할 섹션의 시작 부분을 표시합니다.\z
chomp
\K