in reply to Parse out the extension of a filename - return base of filename.
and then, later , in sub_usage :my $file = "@_" || die(sub_usage($funcName));
where do you really want to die? :-)die("\n\tThis function requires that you call ".
Aside from this, I've always interpreted "base filename" and "extention" to be 2 particular and discrete things, so if you do have a file named foo.bar.baz.quux, you've got a base filename of "foo.bar.baz" and an extention of "quux"; do you have a particular need or use to split on every dot, or were you being (lowercase) lazy?
in any case, it really seems like you're doing too much work here. Additionally, I would not use any module that required me to declare a DEBUG variable (or constant, in this case) in my own package, but perhaps this could be addressed if you make your File::Basename::foo package. File::Basename::foo::DEBUG would be ok with me.
here's a AWTDI, using sexegers, for comparison.
Update : You could also reverse and split /./,$_,2 rather than use the regex in the unless line... so many ways... :-)use Carp; ($f, $e) = &sex_ext ($ARGV[0]); print "fname : $f ; ext : $e\n"; sub sex_ext { local $_ = reverse $_[0] or carp "no filename supplied to sex_ext!\n"; #no period or ext found, return original arg return $_[0] unless /(.*?)\.(.+)/; my $fname = reverse$2; my $ext= reverse $1; return ($fname, $ext); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Parse out the extension of a filename - return base of filename. (boo)
by snafu (Chaplain) on Mar 13, 2002 at 13:12 UTC |