📄 filespec.t
字号:
#!./perlBEGIN { unshift(@INC,'../lib') if -d '../lib'; }use VMS::Filespec;foreach (<DATA>) { chomp; s/\s*#.*//; next if /^\s*$/; push(@tests,$_);}print '1..',scalar(@tests)+6,"\n";foreach $test (@tests) { ($arg,$func,$expect) = split(/\t+/,$test); $idx++; $rslt = eval "$func('$arg')"; if ($@) { print "not ok $idx : eval error: $@\n"; next; } else { if ($rslt ne $expect) { print "not ok $idx : $func('$arg') expected |$expect|, got |$rslt|\n"; } else { print "ok $idx\n"; } }}$defwarn = <<'EOW';# Note: This failure may have occurred because your default device# was set using a non-concealed logical name. If this is the case,# you will need to determine by inspection that the two resultant# file specifications shwn above are in fact equivalent.EOWif (rmsexpand('[]') eq "\U$ENV{DEFAULT}") { print 'ok ',++$idx,"\n"; }else { print 'not ok ', ++$idx, ": rmsexpand('[]') = |", rmsexpand('[]'), "|, \$ENV{DEFAULT} = |\U$ENV{DEFAULT}|\n$defwarn";}if (rmsexpand('from.here') eq "\L$ENV{DEFAULT}from.here") { print 'ok ', ++$idx, "\n";}else { print 'not ok ', ++$idx, ": rmsexpand('from.here') = |", rmsexpand('from.here'), "|, \$ENV{DEFAULT}from.here = |\L$ENV{DEFAULT}from.here|\n$defwarn";}if (rmsexpand('from') eq "\L$ENV{DEFAULT}from") { print 'ok ', ++$idx, "\n";}else { print 'not ok ', ++$idx, ": rmsexpand('from') = |", rmsexpand('from'), "|, \$ENV{DEFAULT}from = |\L$ENV{DEFAULT}from|\n$defwarn";}if (rmsexpand('from.here','cant:[get.there];2') eq 'cant:[get.there]from.here;2') { print 'ok ',++$idx,"\n"; }else { print 'not ok ', ++$idx, ': expected |cant:[get.there]from.here;2|, got |', rmsexpand('from.here','cant:[get.there];2'),"|\n";}# Make sure we're using redirected mkdir, which strips trailing '/', since# the CRTL's mkdir can't handle this.print +(mkdir('testdir/',0777) ? 'ok ' : 'not ok '),++$idx,"\n";print +(rmdir('testdir/') ? 'ok ' : 'not ok '),++$idx,"\n";__DATA__# Basic VMS to Unix filespecssome:[where.over]the.rainbow unixify /some/where/over/the.rainbow[.some.where.over]the.rainbow unixify some/where/over/the.rainbow[-.some.where.over]the.rainbow unixify ../some/where/over/the.rainbow[.some.--.where.over]the.rainbow unixify some/../../where/over/the.rainbow[.some...where.over]the.rainbow unixify some/.../where/over/the.rainbow[...some.where.over]the.rainbow unixify .../some/where/over/the.rainbow[.some.where.over...]the.rainbow unixify some/where/over/.../the.rainbow[.some.where.over...] unixify some/where/over/.../[.some.where.over.-] unixify some/where/over/../[] unixify ./[-] unixify ../[--] unixify ../../[...] unixify .../# and back again/some/where/over/the.rainbow vmsify some:[where.over]the.rainbowsome/where/over/the.rainbow vmsify [.some.where.over]the.rainbow../some/where/over/the.rainbow vmsify [-.some.where.over]the.rainbowsome/../../where/over/the.rainbow vmsify [-.where.over]the.rainbow.../some/where/over/the.rainbow vmsify [...some.where.over]the.rainbowsome/.../where/over/the.rainbow vmsify [.some...where.over]the.rainbow/some/.../where/over/the.rainbow vmsify some:[...where.over]the.rainbowsome/where/... vmsify [.some.where...]/where/... vmsify where:[...]. vmsify [].. vmsify [-]../.. vmsify [--].../ vmsify [...]/ vmsify sys$disk:[000000]# Fileifying directory specsdown:[the.garden.path] fileify down:[the.garden]path.dir;1[.down.the.garden.path] fileify [.down.the.garden]path.dir;1/down/the/garden/path fileify /down/the/garden/path.dir;1/down/the/garden/path/ fileify /down/the/garden/path.dir;1down/the/garden/path fileify down/the/garden/path.dir;1down:[the.garden]path fileify down:[the.garden]path.dir;1down:[the.garden]path. fileify # N.B. trailing . ==> null typedown:[the]garden.path fileify /down/the/garden/path. fileify # N.B. trailing . ==> null type/down/the/garden.path fileify # and pathifying themdown:[the.garden]path.dir;1 pathify down:[the.garden.path][.down.the.garden]path.dir pathify [.down.the.garden.path]/down/the/garden/path.dir pathify /down/the/garden/path/down/the/garden/path.dir pathify down/the/garden/path/down:[the.garden]path pathify down:[the.garden.path]down:[the.garden]path. pathify # N.B. trailing . ==> null typedown:[the]garden.path pathify /down/the/garden/path. pathify # N.B. trailing . ==> null type/down/the/garden.path pathify down:[the.garden]path.dir;2 pathify #N.B. ;2path pathify path//down/the/garden/. pathify /down/the/garden/.//down/the/garden/.. pathify /down/the/garden/..//down/the/garden/... pathify /down/the/garden/.../path.notdir pathify # Both VMS/Unix and file/path conversionsdown:[the.garden]path.dir;1 unixpath /down/the/garden/path//down/the/garden/path vmspath down:[the.garden.path]down:[the.garden.path] unixpath /down/the/garden/path/down:[the.garden.path...] unixpath /down/the/garden/path/...//down/the/garden/path.dir vmspath down:[the.garden.path][.down.the.garden]path.dir unixpath down/the/garden/path/down/the/garden/path vmspath [.down.the.garden.path]path vmspath [.path]/ vmspath sys$disk:[000000]# Redundant characters in Unix paths//some/where//over/../the.rainbow vmsify some:[where]the.rainbow/some/where//over/./the.rainbow vmsify some:[where.over]the.rainbow..//../ vmspath [--]./././ vmspath []./../. vmsify [-]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -