私は/path/to/file.txt
perl正規表現置換の中でモジュール修飾された関数を実行しますか?
echo "/path/to/file.txt" | perl -pe 's{(.*)}{File::Basename->dirname($1)}ge'
/path/to/
に変換するには、次のperlのワンライナーを持っているが、私は、
File::Basename->dirname()
の私の呼び出しで何かが欠けて次のエラーの原因となっています:
Can't locate object method "dirname" via package "File::Basename" (perhaps you forgot to load "File::Basename"?) at -e line 1, <> line 1.
私は何をしないのです?
(私はちょうどbashのdirname
を使うことができますが、私はこれを削除した例よりも、perlでもっと複雑なことをしようとしています)。
答え使用できるように、ベース名は、デフォルトで
dirname
をエクスポート: 'エコー「/path/to/file.txtを」 | perl -Fileile :: Basename -pe '{([^ \ n] +)} {dirname($ 1)} ge'' –このモジュールから_all_関数をインポートする方法に注意してください。特定のものだけをインポートするには、 '-MModule = func'を使用してください。 – zdim
お勧めします。 'Dirname'と' basename'を使い、便利に使えるようにする必要があります。D –