我有一个我正在阅读的文件,我试图删除特定字符后的所有内容,例如" ["。我列出了下面的代码:
while($line = <INFILE>) {
print "$line \n";
}
有些行会有&#34; [等等等等等等]&#34;我需要删除第一个括号后的所有内容,包括每行的第一个括号,非常感谢任何帮助!
答案 0 :(得分:2)
要打印特定字符串$delim
的第一个出现位置:
while (<INFILE>) {
printf "%s\n", substr($_, 0, index($_, $delim));
}
这将找到字符串第一次出现的索引,并从第一个字符(0
)开始打印,但不包括第一次出现的索引。
另一种选择是使用正则表达式:
while (<$fh>) {
s/\Q$delim\E.*$//m;
print;
}
请注意\Q
和\E
分隔符,以防止正则表达式引擎解释,例如[
作为正则表达式元字符。
答案 1 :(得分:-4)
由于您提到要将行存储在数组中,请执行以下操作。
my @arr = ();
while(<INFILE>){
chomp;
push @arr, $_;
}
foreach my $item (@arr){
#process lines as you see fit here
}