$exam_nums[$x]
このコードは機能します -が呼び出されたときにファイル名を返すように、完全な txt ファイル パスの配列を取り、それらを取り除きます。
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";
}
}
$
正規表現の「拡張子の削除」部分を取り出してみましたが、役に立ちませんでした。