in reply to Re: How to split "/"
in thread How to split "/"

A quick and dirty solution might be really to use something like my @path = split m:/:, "/home/temp/login"; Disadvantage of such a solution is that your code will break if a dirname contains a slash or you start working on Windows.

Actually, / is not allowed in directory or file names. Windows disallows both \ and /

FYI, Windows accepts both \ and / as separators:

perl -e "print $ARGV[0] . ':';open(FH,$ARGV[0]) or die $ARGV[0] . ':' . $!;" dir/file.txt

Replies are listed 'Best First'.
Re^3: How to split "/"
by bigj (Monk) on Apr 29, 2014 at 15:15 UTC
    You're probably right, but I prefer defensive programming. In production code, I hate such assumptations, as there is always a chance that they will break in strange spots. Here, maybe a network drive on windows with double back slash like \\server or so might be nasty, or maybe the path might be in future something like ftp://home/temp/login. Maybe some internal stuff allows creating hidden anything with [/\\] inside, like perl allows us to create a sub "Hi with spaces inside" if we just manipulate the symbol table. I don't know for sure and won't know if something goes wrong why.

    So I try to advocate using modules that do exactly this job like File::Basename or Path::Tiny. At least, if those are much used modules, there is a lesser chance that things might go wrong.

    Of course, if I just write a snippet, I'd split m:[/\\]:, ... in a heart beat, also. No need to check a module doc if all you want is a short script that won't be used by other (persons/modules/programs).

    Greetings,
    Janek Schleicher

      True. My reply was meant to be informational. And, of course, there are still other platforms than POSIX/Linux/Unix and MS Windows.