Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the correct regexp pattern to match a VMS filename?

The documentation at http://h71000.www7.hp.com/doc/731final/documentation/pdf/ovms_731_file_app.pdf (section 5-1) says the filename should look like this:

node::device:[root.][directory-name]filename.type;version

Most of them are optional (like node, device, version) - not sure which ones and how to correctly write this in a regexp, (including the directory name):

DISK1:[MYROOT.][MYDIR]FILE.DAT

DISK1:[MYDIR]FILE.DAT

[MYDIR]FILE.DAT

FILE.DAT;10

NODE::DISK5:[REMOTE.ACCESS]FILE.DAT
like image 599
bengrine Avatar asked Sep 18 '25 03:09

bengrine


2 Answers

See the documentation and source for the VMS::Filespec Perl module.

like image 135
tchrist Avatar answered Sep 21 '25 00:09

tchrist


From wikipedia, the full form is actually a bit more than that:

NODE"accountname password"::device:[directory.subdirectory]filename.type;ver

This one took a while, but here is an expression that should accept all valid variations, and place the components into capture groups.

(?:(?:(?:([^\s:\[\]]+)(?:"([^\s"]+) ([^\s"]+)")?::)?([^\s:\[\]]+):)?\[([^\s:\[\]]+)\])?([^\s:\[\]\.]+)(\.[^\s:\[\];]+)?(;\d+)?

Also, from what I can tell, your example of

DISK1:[MYROOT.][MYDIR]FILE.DAT

is not a valid name. I believe only one pair of brackets are allowed. I hope this helps!

like image 26
killdash9 Avatar answered Sep 21 '25 01:09

killdash9