Hello Perl monks,
I am a Perl newbie
I am try to get the name of the hash which is in another Perl file, and then access the hash elements, but when I run my program I am getting these errors
Use of uninitialized value $line in pattern match (m//) at test.pm line 17.
Use of uninitialized value $typ_s in string at test.pm line 20.
My code goes like this
package hash;
use strict;
use warnings;
$test = {
'hash1' => {
'paramA' => '00' ,
'paramB' => 'FF' ,
},
'hash2' => {
'paramA' => '01' ,
'paramB' => '02' ,
},
'hash3' => {
'paramA' => '00' ,
'paramB' => '03' ,
},
};
This hash structure is generated, so I can't modify it
This the Perl file which contains the hash that needs to be extracted
This is the Perl script I have written to extract the hash
#!/usr/local/bin/perl
use strict;
use warnings;
Generate();
sub Generate
{
Process_File('hash.pm');
}
sub Process_File
{
my $filename = shift;
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
my $line;
$line =~ m/\'hash1\'/;
my $typ_s = $line->{paramA};
my $paramB = $line->{paramB};
print "$typ_s";
}
Help me!
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.