in reply to Re^2: perl tk widget will not copy files
in thread perl tk widget will not copy files

I am not sure of the design cause of this behaviour, although I have long been aware of it, but using ActiveState Perl v5.20.2, Perl could not find my home directory using backslashes or single backslashes, but changing to single forward slashes did make the opendir work on my laptop.

Update: come to think of it, there are some advantages to Perl's uniform interface to file-systems. For example many algorithms that combine glob or opendir with recursive traversal will be portable between *nix and windows as a result.

One world, one people

  • Comment on Re^3: perl tk widget will not copy files

Replies are listed 'Best First'.
Re^4: perl tk widget will not copy files
by GrandFather (Saint) on Aug 11, 2015 at 12:04 UTC

    On Windows 8.1 using Perl 5.20.2 running:

    use strict; use warnings; opendir my ($root), 'C:\Users\Default'; my @dirs = readdir $root; print "$_\n" for @dirs;

    Prints (in part):

    . .. AppData Application Data Cookies Desktop Documents Downloads Favorites Links Local Settings Music My Documents

    so it seems there is no "design cause" for the behaviour you see because it doesn't exist.

    perl -V reports in part:

    Summary of my perl5 (revision 5 version 20 subversion 2) configuration +: Platform: osname=MSWin32, osvers=6.3, archname=MSWin32-x64-multi-thread uname='Win32 strawberry-perl 5.20.2.1 #1 Sat Feb 21 18:04:11 2015 +x64'
    Premature optimization is the root of all job security
      The platform I reproduced it on was Windows 7. I notice also you used Strawberry Perl for your test. I don't know where or when this behaviour got fixed, but to say it doesn't exist seems rash under the circumstances.

      One world, one people

        I have used various versions of Perl ranging from 5.8 through 5.20 on Windows XP, Vista, 7 and 8.1 without having any issue using either \ or /, or indeed mixing them, as path separators for internal Perl file operations or for most Windows command line file operations.

        There are Windows applications that don't play the game. msiexec is one of them as I found out while fixing a bug in our build and test system today. Maybe what you saw was nothing to do with Perl but happened in a context where you were using Perl?

        Premature optimization is the root of all job security