Here's a little something I've been working on. The interface probably
needs some work but the code appears to work. You can use Data::Dumper
to get a quick feel for what it returns. Grab it from
http://nbpfaus.net/~pfau/perl/vms-logical-0_1.tar-gz.
It looks like someone tried to do this before but from googling it
appears it may not have ever gone anywhere. I can't find it on CPAN.
I'd be agreeable to renaming it VMS::LNM or something if necessary to
avoid a namespace collision.
NAME
VMS::Logical - OpenVMS Logical name interface
SYNOPSIS
use VMS::Logical qw(translate define deassign);
$hashref = translate({lognam='sys$sysdevice',
case_blind=>1});
$status = define({lognam=>'TEST_LOGICAL',
tabnam=>'LNM$JOB',
acmode=>'SUPERVISOR',
equiv->[{string=>'equivalence'},
{string=>'another'}]});
$status = deassign({lognam=>'TEST_LOGICAL',
tabnam=>'LNM$JOB',
acmode=>'SUPERVISOR'});
DESCRIPTION
VMS::Logical provides access to logical names on OpenVMS systems.
translate
Translates a logical name.
$hash = VMS::Logical::translate('logical_name');
$hash = VMS::Logical::translate({option=>value});
The first form can be used for a simple logical name translation using
default search options. The second form should be used if additional
options are necessary.
A hash reference should always be returned. Check the value of "sts" in
the hash to determine if the logical was translated. This value is the
status code returned by the SYS$TRNLNM call and should be 1 to indicate
success.
The options hash may contain the following values.
lognam
The logical name to translate.
case_blind
When set to 1, case will be ignored when searching for the logical
name.
interlocked
When set to 1, waits for cluster operations to complete before
proceeding.
table
Specifies the name of the table to be searched for the logical name.
acmode
Access mode to use for searching. The value should be one of USER,
SUPERVISOR, EXECUTIVE or KERNEL. Any abbrevation of these is
accepted. If specified, only logical names at the specified mode or
a more privileged mode will be returned.
define
Defines a logical name.
$status = VMS::Logical::define({option=>value});
The return value is the status code returned by SYS$CRELNM. An odd value
indicates success.
The options hash may contain the following values.
table
The name of the table to contain the logical name.
lognam
The name of the logical to be defined.
acmode
The access mode of the logical name.
attr
Attributes for the logical name. This is a hashref containing the
following options.
CONFINE
Logical will not be copied to subprocesses when spawning.
NO_ALIAS
Don't allow duplicate logical names at outer levels.
equiv
An array of equivalence definitions. Each equivalence is a hashref
containing the following items.
attr
Attributes for the equivalence. The following attributes are
supported.
CONCEALED
Create a concealed logical.
TERMINAL
The equivalence contains no logical names.
string
The equivalence string.
deassign
Deletes a logical name.
$status = VMS::Logical::deassign({option=>value});
The options hash may contain the following values.
table
Name of the table containing the logical.
lognam
The name of the logical to delete.
acmode
The access mode of the logical name.
SEE ALSO
'HP OpenVMS Programming Concepts Manual' contains a chapter about
logical names and logical name tables.
'HP OpenVMS System Services Reference Manual' provides detailed
information about the OpenVMS logical name system services.
AUTHOR
Thomas Pfau, < [EMAIL PROTECTED] >
COPYRIGHT AND LICENSE
Copyright (C) 2008 by Thomas Pfau
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself, either Perl version 5.8.8 or, at
your option, any later version of Perl 5 you may have available.