我正在尝试验证Perl中的文件名,但我无法让它工作,我不确定我做错了什么。请参阅下面的代码。
while ($filename !~ /^[-w].pl$/){
print "Invalid file name, type another : ";
my $filename = <STDIN>;
chomp $filename;
}
$filename !~ /^[-w].pl$/
此表达式仅允许长度为一个字符(不包括扩展名(的文件名,该字符为单词字符或短划线。
我猜你的意思是:
$filename !~ /^[-w]+.pl$/
注意:正如melpomene所评论的那样,正则表达式的另一个问题是它将允许在扩展名后具有尾随新行的文件名。为避免这种情况,您可以使用z
断言:
$filename !~ /^[-w]+.plz/