我想从行尾开始删除匹配模式,并将其余行存储到变量中,如何在perl中进行操作?
例如:
$ROOT = "/home/usr/bin";
我想从$ ROOT变量上面删除“/ bin”并打印/存储其余变量。以下代码是否有效?
$ROOT =s/^(.*?)(?=\/bin)/$1/g
print $ROOT;
上面的代码会打印在输出下面吗,
/home/usr
请注意,由于我是新人,我可能错误地提出上述建议。请帮帮我。
答案 0 :(得分:6)
或者您可以使用File::Basename:
use strict;
use warnings;
use File::Basename;
my $ROOT = "/home/usr/bin";
print dirname($ROOT);
输出:
/home/usr
答案 1 :(得分:5)
试试这个:
my $ROOT = "/home/usr/bin";
$ROOT =~ s!/bin$!!; # the delimiter is "!" to avoid escaping "/"
print $ROOT;
就像foampile所说,你可以用perl
解释器来测试你的正则表达式。我建议您使用互动perl
shell perlconsole
或re.pl
perlconsole
:
答案 2 :(得分:1)
你已经通过使用前瞻来打破它了。如果你写的只是
$ROOT =~ s/^(.*)\/bin/$1/
那么它会起作用。要删除任何路径的最后一段,请写
$ROOT =~ s|/[^/]*$||