http://qs321.pair.com?node_id=123548


in reply to Re: Re: Re: convert windows path
in thread convert windows path

i've think i have confused the situation, the problem is some browsers submit the full path whereas some submit just the filename. when the full path is submitted i can't work out how to get the filename out. eg filename from c:\somedir\file.ext. perl doesn't let me search & replace those \ slashes when they are on their own.

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: convert windows path
by Tyke (Pilgrim) on Nov 06, 2001 at 15:26 UTC
    If you're just trying to extract a file from a path then something like
    $var =~ /([^\\\/]*)$/ and $file = $1
    should work. (I'm sure that there's a FAQ on this). Or you might want to try one of the File::Path modules, but that's probably overkill.
Re: Re: Re: Re: Re: convert windows path
by George_Sherston (Vicar) on Nov 06, 2001 at 15:33 UTC
    So... what? you want to get a scalar var containing the filename? So you can print it out or something?

    If that's what you want, There's A Lot More Than One Way To Do It. Don't let anyone around here hear you say "Perl doesn't let me search and replace..." ! If anyone can search and replace it's Perl.

    Assuming you have
    my $filepath = 'c:\somedir\file.ext'
    and you want to get
    $filename eq 'file.ext'
    then
    $filepath =~ /([\w|\.]*)$/; my $filename = $1;
    Oughta do it - i.e. capture the longest possible string at the end of the filepath that is either a word character (alpha-num or _) or a dot. Or if you think there might be non-word characters in the file name, $filepath =~ /([^\\|^\/]*)$/; - capture the longest string at the end that doesn't have either a "\" or a "/".

    I'm no regex guru, so there may be obscure pitfalls in either of these, or a neater way to do it... but that's what I'd do.

    Of course, I may have completely mis-understood your question again :)

    George Sherston