http://qs1969.pair.com?node_id=1009560


in reply to Need help modifing a script

Your main problem appears to be that the original script depended on "-in" and "-out" as a suffix for the files to work, and now you have to deal with a file name prefix instead.

So I'd say you have to strip the path from the filename (it's always the same anyway), or, perhaps easier, avoid adding it in the first place, by chdirring to the directory before calling glob, and then you're free to go.

chdir $path or die "Cannot chdir to $path: $!"; @Files = glob('*.wav');
Then you can safely do:
foreach my $File (@Files) { next unless -e $File; # already deleted my($type, $basename) = $File =~ /^PBX-(INTERNAL|IN|OUT)-(.*)\.wav$ +/; if(!$type) { # ??? unlink $File; } elsif($type ne 'INTERNAL') { # IN, OUT system("/usr/bin/sox -m $File PBX-INTERNAL-$basename.wav $base +name.wav"); unlink $File, "PBX-INTERNAL-$basename.wav"; # delete original +s system("/usr/bin/lame --cbr -b 32 --noreplaygain -q 2 \"$basen +ame.wav\" \"$basename.mp3\" --quiet"); if(!$? && -e "$basename.mp3") { system("mv \"$basename.mp3\" $mount"); unlink "$basename.wav"; } } }
Untested, but at least it passes syntax check.