【发布时间】:2013-01-12 22:00:08
【问题描述】:
我正在尝试用 Perl 替换文件中的一组特定字符,但它似乎不起作用,这是我的代码。
my $file = shift;
open(FILE, "$file") or die "File not found";
while (<FILE>){
$data .=$_
}
$data =~ s/[^A-CEGHJ-PR-TW-Z]{1}[A-CEGHJ-NPR-TW-Z]{1}\s?[0-9]{2}\s?[0-9]{2}\s[0-9]{2}\s?[A-DEM]{0,1}$/XX012345X/g;
我知道我的模式匹配适用于查找字符集,但我不完全确定替换是否有效。然而,我主要关心的是 Perl 代码。该文件在我运行后保持不变。
示例文件。
AB123456C Ab12345678 DG657465 GH123456FG
【问题讨论】:
-
你能在你的问题中发布一个示例文件吗?
-
1.您不写入该文件,您只是从中读取数据,那么为什么要更改文件? 2.您的正则表达式使用锚来匹配字符串的开头和结尾,您读取多行,可能您需要
m修饰符来更改该行为? -
也许你应该提到你希望你的代码能做什么。除非您打印
$data,否则此代码不会执行任何操作。此外,在您的正则表达式的第一部分,您有Z{1},这看起来像是一个错字。 -
哦,而且“它不起作用”是描述您的问题的一种非常糟糕的方式。它并没有真正说什么,是吗。
-
"运行后文件保持不变。"回答那个。所做的编辑。我的意图在第一行很清楚,但为了清楚起见,我正在尝试打开一个文件,对整个文件执行替换正则表达式。谢谢