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


in reply to how to dir a directory that have space

given that your $source_directory contains spaces, the system command is misinterpreted:
`dir $source_directory /b/s /o:-d`;
use system(@list) form instead:
system('dir', $source_directory, '/b/s', '/o:-d');

Replies are listed 'Best First'.
Re^2: how to dir a directory that have space
by BrowserUk (Patriarch) on Jan 16, 2015 at 08:42 UTC
    use system(@list) form instead:

    That does nto work on windows!

    The simplest solution to the OP's problem is:

    my $source_directory = 'E:\\common\compare\latest folder\PDF\DB\\'; `dir \"$source_directory\" /b/s /o:-d`;

    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked
      works for me,
      perl -we "system('dir','/b/s','/o:-d',shift)" "Program Files" C:\Program Files\Internet Explorer C:\Program Files\Microsoft Office C:\Program Files\Syncplicity C:\Program Files\McAfee C:\Program Files\WinDjView C:\Program Files\Synaptics C:\Program Files\Realtek C:\Program Files\Microsoft Silverlight C:\Program Files\Windows Journal C:\Program Files\Java C:\Program Files\Microsoft Policy Platform C:\Program Files\Common Files C:\Program Files\Lenovo C:\Program Files\Courion Corporation C:\Program Files\Windows Defender ...
      indeed, there was dir.exe in cygwin in my setup that I needed to expunge before running the one-liner

        Well I never, bless my soul, so it does. (In this case...) I stand corrected!

        On Windows, parameters are passed to executables as a single string, so the list forms of system & open etc., join the list into a single string before calling CreateProcess().

        There is some intelligence involved in the concatenation, but in many, (by my experience: most) cases, that 'intelligence' flies in the face of expectation, and gets it wrong.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked

        By way of example of the inconsistent nature of the internal handling of the list form:

        system 'perl', '-E', 'say 12345;';; ## Works! 12345 system 'perl', '-E', 'say "hello world";';; ## Doesn't work. system 'perl', '-E', 'say \"hello world\";';; ## Doesn't work. system 'perl', '-E', '"say \"hello world\";"';; ## Works! hello world system 'perl', '-E', '\"say \"hello world\";\"';; ## Doesn't work, Can't find string terminator '"' anywhere before EOF at -e line 1.

        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked

      No it does not work.

        No it does not work.

        Works for me:

        C:\test>perl -we"my $dir = 'c:\\program files\\'; print for `dir \"$di +r\" /s /b /o:-s`" c:\program files\7-Zip c:\program files\Bin c:\program files\Common Files c:\program files\Core Temp c:\program files\CPUID c:\program files\Direct Modeling Express 4.0 c:\program files\Extras c:\program files\GlowCode 9.0 c:\program files\Hitman Pro 3.5 ...

        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked