0

/temp/bin/usr/変数から抽出しようとしています

$path  = /temp/bin/usr/... 

perlを使用します。誰かがそれを手伝ってくれる?

4

3 に答える 3

3

を使用し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/\.+$//;
于 2013-03-05T15:53:23.720 に答える
1

パスの一部、たとえば最初の3つのディレクトリを抽出するには、次のようなsplitdirモジュールのメソッドを使用する方法があります。File::Spec

printf "%s\n", join q|/|, (File::Spec->splitdir( $path ))[0..3];

これらのドットを削除する場合は、次のように、最後のスラッシュの後にそれらに一致する正規表現を使用します。

$path =~ s|(/)\.+\s*$|$1|;
于 2013-03-05T16:04:16.220 に答える
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;

そして、もっとたくさんあります!

于 2013-03-05T16:07:51.010 に答える