wor*_*wer 1 perl pattern-matching
我有
$w="/fold1/fold2/qwerty.h"
Run Code Online (Sandbox Code Playgroud)
我想剪切/qwerty.h并获取/ fold1/fold2
我试过了
$w=~s/\/.+\.h\z//; and $w=~s/\/.+?\.h\z//;
Run Code Online (Sandbox Code Playgroud)
但那些删除整个字符串.
$w=~s/\/\w+\.h\z//;
Run Code Online (Sandbox Code Playgroud)
但是假设我有qwe\rty.h而不是qwerty.h.这不会再起作用了.
使用File :: Basename,标准库中的模块之一:
use File::Basename;
my $dir = dirname( $path );
Run Code Online (Sandbox Code Playgroud)
通常,当您知道数据是某种类型时,请尝试将它们视为该类型.在这种情况下,您知道它是一个文件路径,因此不要将其视为一般字符串,而应将其视为文件路径.