> my ($name) = $path =~ m|([^/]+)$|;
Shouldn't that be a "=~ s|([^/]+)$|;" not m?
On 4/26/07, Nishi <[EMAIL PROTECTED]> wrote:
Rob: On 4/25/07, Rob Dixon <[EMAIL PROTECTED]> wrote: > > Nishi wrote: > > > > What is the equivalent of basename? Ie if I dont want to use basename > > package to get the filename off a path, what reg expr can i use in perl? > > > > Would this work -- > > my $fileName=$path =~ /.*\/(.+)$/; > > Why don't you try it?! > > It wouldn't work because $fileName would end up with either a true or a > false value depending on whether the regex matched. To get the captured > string put the regex in list context: > > my ($fileName) = $path =~ /.*\/(.+)$/; > > But it would still fail if there was no slash in the $path string. You > may want to use the slightly simpler > > my ($name) = $path =~ m|([^/]+)$|; I tried it, but somehow doesnt work for me, printing $name returns me the entire string such as C:\temp\abc\abc.txt and not abc.txt. Am I missing something? which just grabs all the characters at the end of the string that aren't > slashes, and works whether or not there is a path as well as a file name > in the string. > > Cheers, > > Rob > > >
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/