私は、このような完全なパス持ってperlのPerlを使用してWindowsでファイル名のないパスを取得するにはどうすればよいですか?
を通じてウィンドウにファイル名なしでパスを取得するために探しています:私のようなパスのみを必要とファイル名を取り除きたい
c:\My_Designs\ipcore_script\test\src\IP_CORE\mux\sus.do
を:
c:\My_Designs\ipcore_script\test\src\IP_CORE\mux
私は、このような完全なパス持ってperlのPerlを使用してWindowsでファイル名のないパスを取得するにはどうすればよいですか?
を通じてウィンドウにファイル名なしでパスを取得するために探しています:私のようなパスのみを必要とファイル名を取り除きたい
c:\My_Designs\ipcore_script\test\src\IP_CORE\mux\sus.do
を:
c:\My_Designs\ipcore_script\test\src\IP_CORE\mux
> perl -MFile::Basename -wE "say dirname(qq(c:/perl/bin/perl.exe));"
c:/perl/bin
またPath::Classを使用することができます。
#!/usr/bin/env perl
use strict;
use warnings;
use Path::Class;
my $file = file('c:\My_Designs\ipcore_script\test\src\IP_CORE\mux\sus.do');
print $file->parent, "\n";
出力:
C:\My_Designs\ipcore_script\test\src\IP_CORE\mux
こんにちは、ありがとうございます。 script.pl行6の@INC(@INCにはC:/ Perl64/site/lib C:/ Perl64/ lib。)のPath/Class.pmを見つけることができません。 BEGINは失敗しました - .pl line 6.私はこのclass.pmライブラリを見つけることができます – mitt2050
@ mitt2050彼の答えにはリンクがあります。ただし、ActivePerlを使用する場合は、そのパッケージマネージャーを使用することができます。 cmdプロンプトから 'ppm install Path :: Class'と入力します。あるいは、GUIにアクセスするための 'ppm'だけです。 – TLP
また、この
$path='c:\My_Designs\ipcore_script\test\src\IP_CORE\mux\sus.do';
my $pathname=substr($path, 0, rindex($path,"\\"));
Result:
c:\My_Designs\ipcore_script\test\src\IP_CORE\mux
ファイル::スペックは別のオプションですが試すことができます。 (私は何年か前にFile :: BasenameからFile :: Specに切り替えました;なぜ私がそれをしたのか覚えていればフォローアップします) –
@KeithThompson 'File :: Basenameのdirname()とbasename()同じ名前のシェル関数とC関数の振る舞いと癖をエミュレートします。 File :: Specのsplitpath()メソッドとsplitdir()メソッドを使用するのがあなたの懸念事項を単に解析するだけであれば安全です。 ' – unixman83