[英]I need search a pattern in a header line of my file and concatenates the next line with Perl
[英]Perl: How do I search a text file line by line to find a specific pattern?
我想在文本文件每一行的開頭找到一個字符串STRING
。 到目前為止,我有:
open(FILEHANDLE, "sample.txt")
while(my $line = <$FILEHANDLE>){
if($line =~ PATTERN){
doSomething();
}
}
我的問題是:我應該為PATTERN
放置什么以使代碼正常工作? 我知道STRING
將會在文本文件每一行的開頭,並且STRING
后面將是空格。 STRING
可能會更改,因此它必須在變量中且不能進行硬編碼。
到目前為止,我只能想到使用Python的方式:
PATTERN = r"^" + re.escape(STRING) + r"\s"
if re.search(PATTERN, line):
doSomething();
如何將其翻譯為Perl?
另外,如果這是錯誤的Perl語法,請告訴我,以便對其進行修復。
您快要在那里了,只需要知道這一點即可.
是字符串連接,不是+
。 並且那個quotemeta()確實進行了字符串轉義。
my $pat = "^".quotemeta($string)."\s" ;
while(my $line = <$FILEHANDLE>){
if($line =~ /$pat/){
doSomething();
}
}
您正在尋找的是quotemeta
use strict;
use warnings;
use autodie;
my $file = 'sample.txt';
my $literal_string = '...';
open my $fh, '<', $file;
while (my $line = <$fh>){
if ($line =~ /^\Q$literal_string\E/){
doSomething();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.