/temp/bin/usr/
変数から抽出しようとしています
$path = /temp/bin/usr/...
perlを使用します。誰かがそれを手伝ってくれる?
を使用しFile::Basename
ます。これはPerlバージョン5のコアモジュールです。ドキュメントから:
use File::Basename;
($name,$path,$suffix) = fileparse($fullname, @suffixlist);
$name = fileparse($fullname, @suffixlist);
$basename = basename($fullname, @suffixlist);
$dirname = dirname($fullname);
それはあなたが求めているもののように聞こえdirname($path)
ます。
単に正規表現を使用することもできます
$path =~ s/\.+$//;
パスの一部、たとえば最初の3つのディレクトリを抽出するには、次のようなsplitdir
モジュールのメソッドを使用する方法があります。File::Spec
printf "%s\n", join q|/|, (File::Spec->splitdir( $path ))[0..3];
これらのドットを削除する場合は、次のように、最後のスラッシュの後にそれらに一致する正規表現を使用します。
$path =~ s|(/)\.+\s*$|$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;
そして、もっとたくさんあります!