好吧,我有一个让我疯狂的问题。我试图抽取子与使用正则表达式:在perl中用正则表达式提取一个子字符串
($var) = $data =~ m/regex/;
它的工作,但“串”所返回的是不太一样的真正的SUBSTR。打印字符串看起来像真正的substr,但用if($ var eq“substr”)检查不会返回true。我也注意到,当我尝试使用$ var。=“..”添加某些内容时,我得到(如果$ var是“hello”)“..llo”。
这是什么回来?
我在Linux中运行这个如果有所作为。我不认为会这样,但是这个相同的代码适用于Windows。
下面的代码示例:
$datatxt contains
..
udir=/home/me/
..
use File::Read;
my $data = read_file({skip_comments => 1}, $datatxt);
($udir) = $data =~ m/udir=(.*)/;
print $udir; #prints /home/me/
print ".".$udir."."; #prints ..home/me/
if ($udir ne "/home/me/") {
print "not equal"; #prints...
}
你的正则表达式中是否有任何组? – Cameron 2012-04-24 23:00:31
你有一个'\ r'在某个引起它的地方。 (做'打印“hello \ r .. \ n”;'看看结果)。 Windows和\ * nix使用不同的EOL - 具体来说,\ * nix不使用'\ r'。如果您发布*实际示例*,我们可能会提供更多见解。 – 2012-04-24 23:02:49
哦,这很有道理。我复制了从我的Windows分区读取的数据文件。非常感谢。 – user1126345 2012-04-24 23:35:46