in reply to Re: Re: Removing File Extensions
in thread Removing File Extensions
This works:No, it doesn't always work. It fails if the filename is part of a complete path.
@files = ("one.zip","twotwo.doc","three3.ppt","testfour"); map {$_ =~ /([^.]*)\.?/; push (@onlyNames, $1); push (@onlyExt, $');} +@files;
Consider the following input, which will cause a complete path instead of a filename to be pushed into your @onlyNames array:
/usr/bin/perl /home/users/d/davido/text.txt C:\Perl\scripts\mytest.pl
In each of those cases, you'll capture into @onlyNames the following:
/usr/bin/perl /home/users/d/davido/text C:\Perl\scripts\mytest
It gets even worse if one of the directory names in the path contains a dot (.)
Consider what happens if the input looks like this:
C:\Perl\scripts.old\mytest.pl
In that case, @onlyNames will contain:
C:\Perl\scripts
And clearly that's not a filename.
Update: Just thought of another situation that may reveal a bug: What if the filename has multiple extensions? In this case, it would be up to the OP to define what constitutes an extension, and what constitutes a filename. But by way of example, your solution would turn:
bigfile.tar.gz
...into...
bigfile
The danger here is that while .gz represents the extension, .tar represents a second layer of 'extension'. But the name of the .gz file really is bigfile.tar, since we're dealing with multiple layers of processing on the said file.
Dave
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
| A reply falls below the community's threshold of quality. You may see it by logging in. |