develooper Front page | perl.beginners | Postings from April 2012

Re: ENV variable or others things

Thread Previous | Thread Next
From:
Zapp
Date:
April 27, 2012 22:12
Subject:
Re: ENV variable or others things
Message ID:
4F9B7C0D.9080008@Gmail.com
于 2012-4-27 20:43, Shawn H Corey 写道:
> On 12-04-27 03:06 AM, Zapp wrote:
>> when I use bash, I can write a file ( a.sh ) like :
>> abc='abc'
>> ddd='aaa'
>> ...
>> then I can load it in other file:
>> source a.sh
>> echo $abc $ddd # it always work!
>>
>> but in perl , how can I do like that ?
>>
>> I write a file ( my_env.pl ) like:
>> #!/usr/bin/perl -w
>> my $abc='abc';
>> my $ddd="ddd";
> `my` produces lexical variables which means they are scoped to the file.
> These variable will not be accessible outside the file. Tey something like:
>
> use vars qw( $abc $ddd );
> $abc = 'abc';
> $ddd = 'ddd';
>
>> and in my.pl :
>> #!/usr/bin/perl -w
>> use strict;
>>
> use vars qw( $abc $ddd );
>
>> do './my_env.pl' or die '$!\n";
>> print $abc $ddd; # and nothing happen
> print $abc, $ddd, "\n";
>
>> why? anybody knows? Thanks!
>>
> If you want to create a configuration file:
>
> $ cat MyConfig.pm
> #!
>
> use strict;
> use warnings;
>
> use base qw( Exporter );
> our @EXPORT = qw( %MyConfig );
> our @EXPORT_OK = qw( );
> our %EXPORT_TAGS = (
>   all => [ @EXPORT, @EXPORT_OK ],
> );
>
> our %MyConfig = (
>   abc => 'abc',
>   ddd => 'ddd',
> );
>
> 1;
> __END__
> $ cat myscript.pl
> #!/usr/bin/env perl
>
> use 5.014;
> use strict;
> use warnings;
>
> use Data::Dumper;
>
> # Make Data::Dumper pretty
> $Data::Dumper::Sortkeys = 1;
> $Data::Dumper::Indent   = 1;
>
> # Set maximum depth for Data::Dumper, zero means unlimited
> local $Data::Dumper::Maxdepth = 0;
>
> our %MyConfig;
> use MyConfig;
>
> print Dumper \%MyConfig;
>
> __END__
> $
>
>
Thanks! It's work!

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About