$79 GRAYBYTE WORDPRESS FILE MANAGER $66

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/usr/share/perl5/vendor_perl/

HOME
Current File : /usr/share/perl5/vendor_perl//Env.pm
package Env;

our $VERSION = '1.04';

=head1 NAME

Env - perl module that imports environment variables as scalars or arrays

=head1 SYNOPSIS

    use Env;
    use Env qw(PATH HOME TERM);
    use Env qw($SHELL @LD_LIBRARY_PATH);

=head1 DESCRIPTION

Perl maintains environment variables in a special hash named C<%ENV>.  For
when this access method is inconvenient, the Perl module C<Env> allows
environment variables to be treated as scalar or array variables.

The C<Env::import()> function ties environment variables with suitable
names to global Perl variables with the same names.  By default it
ties all existing environment variables (C<keys %ENV>) to scalars.  If
the C<import> function receives arguments, it takes them to be a list of
variables to tie; it's okay if they don't yet exist. The scalar type
prefix '$' is inferred for any element of this list not prefixed by '$'
or '@'. Arrays are implemented in terms of C<split> and C<join>, using
C<$Config::Config{path_sep}> as the delimiter.

After an environment variable is tied, merely use it like a normal variable.
You may access its value 

    @path = split(/:/, $PATH);
    print join("\n", @LD_LIBRARY_PATH), "\n";

or modify it

    $PATH .= ":.";
    push @LD_LIBRARY_PATH, $dir;

however you'd like. Bear in mind, however, that each access to a tied array
variable requires splitting the environment variable's string anew.

The code:

    use Env qw(@PATH);
    push @PATH, '.';

is equivalent to:

    use Env qw(PATH);
    $PATH .= ":.";

except that if C<$ENV{PATH}> started out empty, the second approach leaves
it with the (odd) value "C<:.>", but the first approach leaves it with "C<.>".

To remove a tied environment variable from
the environment, assign it the undefined value

    undef $PATH;
    undef @LD_LIBRARY_PATH;

=head1 LIMITATIONS

On VMS systems, arrays tied to environment variables are read-only. Attempting
to change anything will cause a warning.

=head1 AUTHOR

Chip Salzenberg E<lt>F<[email protected]>E<gt>
and
Gregor N. Purdy E<lt>F<[email protected]>E<gt>

=cut

sub import {
    my ($callpack) = caller(0);
    my $pack = shift;
    my @vars = grep /^[\$\@]?[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
    return unless @vars;

    @vars = map { m/^[\$\@]/ ? $_ : '$'.$_ } @vars;

    eval "package $callpack; use vars qw(" . join(' ', @vars) . ")";
    die $@ if $@;
    foreach (@vars) {
	my ($type, $name) = m/^([\$\@])(.*)$/;
	if ($type eq '$') {
	    tie ${"${callpack}::$name"}, Env, $name;
	} else {
	    if ($^O eq 'VMS') {
		tie @{"${callpack}::$name"}, Env::Array::VMS, $name;
	    } else {
		tie @{"${callpack}::$name"}, Env::Array, $name;
	    }
	}
    }
}

sub TIESCALAR {
    bless \($_[1]);
}

sub FETCH {
    my ($self) = @_;
    $ENV{$$self};
}

sub STORE {
    my ($self, $value) = @_;
    if (defined($value)) {
	$ENV{$$self} = $value;
    } else {
	delete $ENV{$$self};
    }
}

######################################################################

package Env::Array;
 
use Config;
use Tie::Array;

@ISA = qw(Tie::Array);

my $sep = $Config::Config{path_sep};

sub TIEARRAY {
    bless \($_[1]);
}

sub FETCHSIZE {
    my ($self) = @_;
    return 1 + scalar(() = $ENV{$$self} =~ /\Q$sep\E/g);
}

sub STORESIZE {
    my ($self, $size) = @_;
    my @temp = split($sep, $ENV{$$self});
    $#temp = $size - 1;
    $ENV{$$self} = join($sep, @temp);
}

sub CLEAR {
    my ($self) = @_;
    $ENV{$$self} = '';
}

sub FETCH {
    my ($self, $index) = @_;
    return (split($sep, $ENV{$$self}))[$index];
}

sub STORE {
    my ($self, $index, $value) = @_;
    my @temp = split($sep, $ENV{$$self});
    $temp[$index] = $value;
    $ENV{$$self} = join($sep, @temp);
    return $value;
}

sub EXISTS {
    my ($self, $index) = @_;
    return $index < $self->FETCHSIZE;
}

sub DELETE {
    my ($self, $index) = @_;
    my @temp = split($sep, $ENV{$$self});
    my $value = splice(@temp, $index, 1, ());
    $ENV{$$self} = join($sep, @temp);
    return $value;
}

sub PUSH {
    my $self = shift;
    my @temp = split($sep, $ENV{$$self});
    push @temp, @_;
    $ENV{$$self} = join($sep, @temp);
    return scalar(@temp);
}

sub POP {
    my ($self) = @_;
    my @temp = split($sep, $ENV{$$self});
    my $result = pop @temp;
    $ENV{$$self} = join($sep, @temp);
    return $result;
}

sub UNSHIFT {
    my $self = shift;
    my @temp = split($sep, $ENV{$$self});
    my $result = unshift @temp, @_;
    $ENV{$$self} = join($sep, @temp);
    return $result;
}

sub SHIFT {
    my ($self) = @_;
    my @temp = split($sep, $ENV{$$self});
    my $result = shift @temp;
    $ENV{$$self} = join($sep, @temp);
    return $result;
}

sub SPLICE {
    my $self = shift;
    my $offset = shift;
    my $length = shift;
    my @temp = split($sep, $ENV{$$self});
    if (wantarray) {
	my @result = splice @temp, $offset, $length, @_;
	$ENV{$$self} = join($sep, @temp);
	return @result;
    } else {
	my $result = scalar splice @temp, $offset, $length, @_;
	$ENV{$$self} = join($sep, @temp);
	return $result;
    }
}

######################################################################

package Env::Array::VMS;
use Tie::Array;

@ISA = qw(Tie::Array);
 
sub TIEARRAY {
    bless \($_[1]);
}

sub FETCHSIZE {
    my ($self) = @_;
    my $i = 0;
    while ($i < 127 and defined $ENV{$$self . ';' . $i}) { $i++; };
    return $i;
}

sub FETCH {
    my ($self, $index) = @_;
    return $ENV{$$self . ';' . $index};
}

sub EXISTS {
    my ($self, $index) = @_;
    return $index < $self->FETCHSIZE;
}

sub DELETE { }

1;


Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
29 Jul 2025 2.08 AM
root / root
0755
Algorithm
--
3 Mar 2024 7.11 PM
root / root
0755
App
--
4 Jun 2025 2.09 AM
root / root
0755
Archive
--
3 Mar 2024 7.11 PM
root / root
0755
Authen
--
3 Mar 2024 11.04 PM
root / root
0755
B
--
3 Mar 2024 7.11 PM
root / root
0755
CPAN
--
4 Jun 2025 2.09 AM
root / root
0755
Carp
--
3 Mar 2024 7.11 PM
root / root
0755
Config
--
3 Mar 2024 7.11 PM
root / root
0755
Data
--
3 Mar 2024 11.04 PM
root / root
0755
Date
--
3 Mar 2024 11.04 PM
root / root
0755
Digest
--
3 Mar 2024 11.04 PM
root / root
0755
Encode
--
3 Mar 2024 7.11 PM
root / root
0755
Error
--
3 Mar 2024 7.11 PM
root / root
0755
Exporter
--
3 Mar 2024 7.11 PM
root / root
0755
ExtUtils
--
3 Mar 2024 7.12 PM
root / root
0755
File
--
3 Mar 2024 11.04 PM
root / root
0755
Filter
--
3 Mar 2024 7.11 PM
root / root
0755
Getopt
--
3 Mar 2024 7.11 PM
root / root
0755
Git
--
23 Jul 2025 2.08 PM
root / root
0755
HTML
--
3 Mar 2024 11.04 PM
root / root
0755
HTTP
--
9 Jun 2024 8.35 AM
root / root
0755
IO
--
3 Mar 2024 11.04 PM
root / root
0755
IPC
--
3 Mar 2024 7.11 PM
root / root
0755
JSON
--
3 Mar 2024 7.11 PM
root / root
0755
LWP
--
3 Mar 2024 11.04 PM
root / root
0755
Locale
--
3 Mar 2024 7.11 PM
root / root
0755
MRO
--
3 Mar 2024 7.11 PM
root / root
0755
Math
--
3 Mar 2024 7.11 PM
root / root
0755
Module
--
3 Mar 2024 7.12 PM
root / root
0755
Mozilla
--
3 Mar 2024 7.11 PM
root / root
0755
Net
--
21 Mar 2024 10.23 AM
root / root
0755
POD2
--
3 Mar 2024 7.11 PM
root / root
0755
Package
--
3 Mar 2024 7.11 PM
root / root
0755
Params
--
3 Mar 2024 7.11 PM
root / root
0755
Parse
--
3 Mar 2024 7.11 PM
root / root
0755
Perl
--
3 Mar 2024 7.11 PM
root / root
0755
PerlIO
--
3 Mar 2024 7.11 PM
root / root
0755
Pod
--
3 Mar 2024 7.11 PM
root / root
0755
Software
--
3 Mar 2024 7.11 PM
root / root
0755
Sub
--
3 Mar 2024 7.11 PM
root / root
0755
TAP
--
3 Mar 2024 7.11 PM
root / root
0755
Term
--
3 Mar 2024 7.11 PM
root / root
0755
Test
--
3 Mar 2024 7.11 PM
root / root
0755
Test2
--
3 Mar 2024 7.11 PM
root / root
0755
Text
--
3 Mar 2024 7.11 PM
root / root
0755
Thread
--
3 Mar 2024 7.11 PM
root / root
0755
Time
--
3 Mar 2024 11.04 PM
root / root
0755
Try
--
3 Mar 2024 11.04 PM
root / root
0755
Types
--
3 Mar 2024 11.04 PM
root / root
0755
WWW
--
3 Mar 2024 11.04 PM
root / root
0755
autodie
--
3 Mar 2024 7.11 PM
root / root
0755
inc
--
3 Mar 2024 7.12 PM
root / root
0755
lib
--
3 Mar 2024 7.11 PM
root / root
0755
libwww
--
3 Mar 2024 11.04 PM
root / root
0755
local
--
3 Mar 2024 7.11 PM
root / root
0755
CPAN.pm
138.013 KB
3 Jun 2025 2.32 PM
root / root
0644
Carp.pm
30.315 KB
13 Oct 2019 7.06 AM
root / root
0644
Digest.pm
10.455 KB
13 Oct 2019 8.28 AM
root / root
0644
Env.pm
5.395 KB
2 Mar 2013 5.10 PM
root / root
0644
Error.pm
24.289 KB
14 Oct 2019 3.30 PM
root / root
0644
Expect.pm
98.093 KB
18 May 2017 7.07 PM
root / root
0644
Exporter.pm
18.307 KB
13 Oct 2019 8.52 AM
root / root
0644
Fatal.pm
56.813 KB
9 Jul 2015 7.16 AM
root / root
0644
Git.pm
46.945 KB
22 Jul 2025 2.33 PM
root / root
0644
LWP.pm
21.168 KB
5 Jun 2018 6.49 PM
root / root
0644
Test2.pm
6.243 KB
30 Mar 2018 5.53 AM
root / root
0644
autodie.pm
12.584 KB
9 Jul 2015 7.16 AM
root / root
0644
bigint.pm
22.85 KB
3 Feb 2018 10.59 AM
root / root
0644
bignum.pm
20.642 KB
3 Feb 2018 10.59 AM
root / root
0644
bigrat.pm
15.775 KB
3 Feb 2018 10.59 AM
root / root
0644
constant.pm
14.379 KB
13 Oct 2019 1.55 PM
root / root
0644
experimental.pm
6.829 KB
3 Dec 2017 5.40 PM
root / root
0644
newgetopt.pl
2.154 KB
9 Jul 2010 12.26 PM
root / root
0644
ok.pm
0.944 KB
30 Mar 2018 5.53 AM
root / root
0644
parent.pm
2.515 KB
6 Jul 2018 5.53 PM
root / root
0644
perldoc.pod
9.156 KB
2 Aug 2016 4.31 PM
root / root
0644
perlfaq.pm
0.075 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq.pod
22.224 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq1.pod
14.118 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq2.pod
9.244 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq3.pod
36.655 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq4.pod
87.304 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq5.pod
54.205 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq6.pod
38.689 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq7.pod
36.93 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq8.pod
48.931 KB
5 Jun 2018 5.02 AM
root / root
0644
perlfaq9.pod
14.499 KB
5 Jun 2018 5.02 AM
root / root
0644
perlglossary.pod
134.016 KB
5 Jun 2018 5.02 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF