我正在尝试使用带有 if 条件的文档来匹配文件名,但 Perl 似乎无法捕获它。我将我的文档定义为:
我的 $file = $filename
其中$filename
等于“/Desktop/src/file_top.sv”。我正在运行一个读取 $filename
的程序,如果该文件未命名为“file_top.sv”,则该程序不会创建其他文件(名称不相关)。我正在尝试使用这样的 if 条件来做到这一点:
if($filename =~ /^file\_top.*\.sv$/){
#do something....
}
但是,这似乎不起作用。难道我做错了什么?您知道其他选择吗?我应该使用整个路径吗?
最佳答案
它不匹配,因为 ^
表示“字符串的开头”,在您的情况下,它是 Desktop
之前的 /
字符。这是一种仅匹配文件名而不匹配目录路径的方法:
use warnings;
use strict;
use File::Basename qw(basename);
my $filename = "/Desktop/src/file_top.sv";
if (basename($filename) =~ /^file_top.*\.sv$/){
print "do something....\n";
}
else {
print "do something else....\n";
}
这将匹配 file_top.sv
和 file_top123.sv
等文件名,但不会匹配 abc_file_top.sv
。
关于perl - 为什么 Perl 无法识别文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75151132/