summaryrefslogtreecommitdiff
path: root/ext/File-DosGlob/lib/File/DosGlob.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ext/File-DosGlob/lib/File/DosGlob.pm')
-rw-r--r--ext/File-DosGlob/lib/File/DosGlob.pm9
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/File-DosGlob/lib/File/DosGlob.pm b/ext/File-DosGlob/lib/File/DosGlob.pm
index 8a85d04796..c90bebb278 100644
--- a/ext/File-DosGlob/lib/File/DosGlob.pm
+++ b/ext/File-DosGlob/lib/File/DosGlob.pm
@@ -6,7 +6,7 @@
package File::DosGlob;
-our $VERSION = '1.09';
+our $VERSION = '1.10';
use strict;
use warnings;
@@ -62,6 +62,13 @@ sub doglob {
opendir(D, $head) or next OUTER;
my @leaves = readdir D;
closedir D;
+
+ # VMS-format filespecs, especially if they contain extended characters,
+ # are unlikely to match patterns correctly, so Unixify them.
+ if ($^O eq 'VMS') {
+ require VMS::Filespec;
+ @leaves = map {$_ =~ s/\.$//; VMS::Filespec::unixify($_)} @leaves;
+ }
$head = '' if $head eq '.';
$head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;