0
나는 perl 구문에 어려움을 겪고 있습니다. 나는 다른 프로젝트의 소스 코드에서 큰 조건부 대체를 수행하기에 충분한 것을 배우려고 노력하고 있지만 문제가 계속되고있다. 내 문제를 테스트하기위한 간단한 스크립트를 작성했는데이 스크립트가 제대로 작동했습니다. 나는 파일에 그것을 시도하고 더 이상 일하지 않았다. 파일에 내 테스트 문자열과 동일한 텍스트가 포함되어 있습니다.파일에서 문자열을 검색하는 perl 구문
나는 파일에서 특별한 것을 읽어야한다고 생각하지만, 무엇에 관해서는 단서가 없다.
test.sh :
#!/usr/bin/perl
use strict;
use warnings;
my $matching = 'Logger\.getInstance\(\)\.addEntry\(((.|\n)*),((.|\n)*),((.|\n)*),((.|\n)*)\)';
my $replacement = '"Logger\.getInstance\(\).addEntry\($1,$7\)"';
my $test_str = "Logger\.getInstance\(\)\.addEntry\(\"error\", \"Thing2D\.PATH_TYPE\", new Object\(\) \{\}\.getClass\(\)\.getEnclosingMethod\(\)\.getName\(\), \"New PATH_TYPE was added and not filled in\.\");";
print "----\nstring:\n" . $test_str . "\n\nreplaced:\n\n";
$test_str =~ s/$matching/$replacement/ee;
print "\n\n" . $test_str . "\n\n\n";
die qq[Usage: perl $0 <subject_file>\n] unless @ARGV == 1;
open my $fh_subject, qq[<], shift @ARGV or die qq[Cannot open input file: $!\n];
my $subject_content;
{
local $/ = undef;
$subject_content = <$fh_subject>;
}
print "----\nString:\n" . $subject_content . "\n\nreplaced:\n\n";
$subject_content =~ "s/$matching/$replacement/ee";
print $subject_content;
있는 test.txt :
Logger.getInstance().addEntry("error", "Thing2D.PATH_TYPE", new Object() {}.getClass().getEnclosingMethod().getName(), "New PATH_TYPE was added and not filled in.");
명령 행 :
./test.sh test.txt
이 도와 주셔서 감사합니다!
의 나는 간단한 것을 알고 있었다! 고맙습니다. 내가하는 반복적 인 작업을 위해 진주를 조금 배우려고합니다. 이것은 많은 도움이됩니다! – vextorspace