我正在尝试从变量
中提取/temp/bin/usr/
$path = /temp/bin/usr/...
使用perl。 有人可以帮我吗?
答案 0 :(得分:3)
使用File::Basename
。它是Perl版本5中的核心模块。来自the documentation:
use File::Basename;
($name,$path,$suffix) = fileparse($fullname, @suffixlist);
$name = fileparse($fullname, @suffixlist);
$basename = basename($fullname, @suffixlist);
$dirname = dirname($fullname);
听起来dirname($path)
就像你追求的那样。
您也可以简单地使用正则表达式
$path =~ s/\.+$//;
答案 1 :(得分:1)
要提取路径的一部分(例如,前三个目录),一种方法是使用模块splitdir
的方法File::Spec
,如:
printf "%s\n", join q|/|, (File::Spec->splitdir( $path ))[0..3];
如果要删除这些点,请在最后一次斜杠后使用与它们匹配的正则表达式,例如:
$path =~ s|(/)\.+\s*$|$1|;
答案 2 :(得分:1)
如果您只需要删除那些'..',那么有很多方法。
例如:
1)
my $str="/temp/bin/usr/...";
($str) =~ s/\.+$//;
print $str;
2)
my $str="/temp/bin/usr/...";
$str = substr($str, 0, index($str, "."));
print $str;
3)
my $str="/temp/bin/usr/...";
$str = (split /\./, $str)[0];
print $str;
还有更多!