Thanks for the note on the File::Path. I meant for this to be a quick throwaway script, and knew that the Cygwin mkdir could do this pretty easily. If I had planned for something any more long term than throwaway I would have looked for a solution better suited to re-use. But nice to know what to look for, anyway.
I did change the script to output the line before the split, and the file and path after. The output is getting long:
LINE: ===filename1 some/file/path===
FILE: ===filename1===
PATH: ===some/file/path===
Made C:/Documents/perl/some/file/path
Moved C:/Documents/perl/filename1.xls to C:/Documents/perl/some/file/p
+ath
LINE: ======
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 15, <DATA>
line 2.
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 15, <DATA>
line 2.
FILE: ======
PATH: ======
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 17, <DATA>
line 2.
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 23, <DATA>
line 2.
Filename is blank, filepath is [], line is []
LINE: ===filename2 some/other/file/path===
FILE: ===filename2===
PATH: ===some/other/file/path===
Made C:/Documents/perl/some/other/file/path
Moved C:/Documents/perl/filename2.xls to C:/Documents/perl/some/other/
+file/path
LINE: ======
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 15, <DATA>
line 4.
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 15, <DATA>
line 4.
FILE: ======
PATH: ======
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 17, <DATA>
line 4.
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 23, <DATA>
line 4.
Filename is blank, filepath is [], line is []
LINE: ===filename3 yet/another/file/path/oooh/this/one/is/long===
FILE: ===filename3===
PATH: ===yet/another/file/path/oooh/this/one/is/long===
Made C:/Documents/perl/yet/another/file/path/oooh/this/one/is/long
Moved C:/Documents/perl/filename3.xls to C:/Documents/perl/yet/another
+/file/path/oooh/this/one/is/long
LINE: ======
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 15, <DATA>
line 6.
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 15, <DATA>
line 6.
FILE: ======
PATH: ======
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 17, <DATA>
line 6.
Use of uninitialized value in concatenation (.) or string at C:\Docume
+nts\perl\try.pl line 23, <DATA>
line 6.
Filename is blank, filepath is [], line is []
And no apparent answer jumps at me. Another good suggestion, though, and one I hadn't tried.