|Just another Perl shrine|
Re^5: Trouble with File::Find::Ruleby Jim (Curate)
|on Dec 15, 2013 at 01:25 UTC||Need Help??|
It was a lament, not an indictment. And I was careful to mention that other modern scripting languages have the same problems handling Microsoft Windows file systems as Perl does so that no fellow monks would get their tender feelings hurt. I still don't see what part of my earnest post got your hackles up. And I challenge your assertion that it is "outrageously inaccurate." No it's not.
If there was any tacit indictment in my post, it was of Microsoft and its own piece-o'-sh*t modern scripting language, PowerShell. When I wrote "I could be wrong," I meant I could be wrong about my insinuation that PowerShell is just as incapable of handling paths that exceed the infamous MAX_PATH limitation as other scripting languages. Well, I just checked the interwebs. I wasn't wrong. PowerShell is as broken with respect to MAX_PATH as just about everything else Microsoft includes in its expensive commercial operating systems (Windows Explorer, the DIR and COPY commands, etc.).
The point of my second post has nothing to do with Japanese per se. I simply used a Japanese folder name (日本, "Japan" in Japanese) in my example Perl script because that folder happened to be on my system drive, and it's one chdir can't change to. That's all. I could just as easily have illustrated the problem with Ｉ ♡ 🐪 or any folder name including any one of the over 110,000 graphical characters in the Unicode character repertoire that will cause chdir to fail. (N.B. I've updated my earlier post with a new example.)
For working code examples, you don't need a new and redundant post from /me. There are examples enough already on site, if you seek them out.
I realize there are innumerable examples on PerlMonks of Perl scripts that use File::Find and that are intended to be run on Windows. And many of them will work just fine until—BAM!—they don't. I enumerated three verifiable reasons any one of these otherwise "working" code examples will not work. And when it fails, you're screwed, because there are no trivial, portable, sensible solutions to any of the problems. There may be workarounds nowadays as Anonymous Monk has pointed out below, but IMHO, they all suck. And they all mean you can't use File::Find, which is my point.