此代码有效 - 它采用一组完整的 txt 文件路径并将它们剥离,以便在$exam_nums[$x]
调用时返回文件名
for (0..$#exam_nums)
{
$exam_nums[$_] =~ s/\.txt$//; #remove extension
$exam_nums[$_] =~ s/$dir//g; #remove path
}
当我尝试对单个变量执行此操作时,它不起作用。我正在调用一个子程序并向它发送一个礼物,但变量最后是空的。(它正在进入 if 语句块,因为那里的其他行运行良好。)这是代码:
调用子:
notify($_);
$_
来自一个有效的foreach(@files)
循环
子:
sub notify
{
if(shift)
{
$ex_num = shift;
$ex_num =~ s/\.txt$//; #remove extension
$ex_num =~ s/$dir//g; #remove path
print $ex_num;
print "\nanything";
}
}
我尝试$
在正则表达式的“删除扩展名”部分中取出,但这没有帮助。