Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^9: warning: use of uninitialized value

by robby_dobby (Hermit)
on Jun 26, 2015 at 05:47 UTC ( [id://1132064]=note: print w/replies, xml ) Need Help??


in reply to Re^8: warning: use of uninitialized value
in thread warning: use of uninitialized value

Well, in that case - you can do something like this:
#!perl my %data_ids; while(my $line = <DATA>) { chomp $line; my ($key, $value) = split /::/, $line; $data_ids{$key} = $value; print $key, " => ", $value, "\n"; } for my $key (keys %data_ids) { print $key, " ==> ", $data_ids{$key}, "\n"; } # or just print $data_ids{'chipId'}, "\n"; print $data_ids{'subversid'}, "\n"; __DATA__ chipId::1925 subversid::0001

From your original code sample, I surmise that you need these IDs for generating an m4 macro. Using a hash might be useful for you since you can just look that up when generating the m4 file later on. Bear in mind all points raise in this thread, use close, closedir properly.

This got longer than expected. Next time around, you could save us all a lot of back and forth by including a small data sample as I showed above with __DATA__. Also, work through perlintro or an introductory perl book(learn.perl.org lists quite a few of them and some freely available online) and ask more questions here when you get stuck.

Good luck!

Replies are listed 'Best First'.
Re^10: warning: use of uninitialized value
by mrityunjaynath (Acolyte) on Jun 26, 2015 at 08:55 UTC

    hello robby_dobby... thanks for the help..i am at the initial level so your suggestion are helping a lot
    i have tried your suggestion and changed the code like this

    my $cChipId; my $cSubVersId; my %data_ids; my $readline; if(open (my $CFILE,"config.txt" ) || die "couldnt open file:", $! ) { while ($readline = <$CFILE>) { chomp $readline; my ($key , $value) = (split /::/, $readline); $data_ids($key) = $value; $readline = <$CFILE>; } foreach my $key (keys %data_ids) { $cChipid = $data_ids('chipid'); $cSubVersId = $data_ids('subversid'); } } close($CFILE);

    but its showing some error like
    global symbol "$data_ids" requires explicit package name at newperlfile2.pl line85. syntax error at newperlfile2.pl line 85, near "$data_ids("
    ....please suggest...
      Hello,

      There are 3 problems I can spot right away:

      • You do the if(open(my $CFILE, ...) within the if block. This means that $CFILE is out of scope outside that block and you can't close it. Place the open on its own line like you did for opening dirhandles.
      • Hashes need curlies, not parens. Read my code once again: $data_ids{'chipId'}, not $data_ids('chipid'), which translates to a subroutine call.
      • Why are you doing the $readline = <$CFILE> once again? You'd be skipping between lines. Like this: read line 1, skip line2, read line 3 and so on. You're already doing it in a while loop, you can delete the second $readline = ..

      I'd reiterate once again - work through an introductory perl tutorial like perlintro. You can avoid these kind of mistakes.

        thanks robby_dobby i have applied your suggestions and its working fine by providing the required output
        but only one warning is comming out everytime
        use of uninitialized value $key in hash element at newperlfile2.pl line 85, <$CFILE> line 3.....
        the line 85 being marked with ****

        my $cChipId; my $cSubVersId; my %data_ids; my $readline; if(open (my $CFILE,"config.txt" ) || die "couldnt open file:", $! ) { while ($readline = <$CFILE>) { chomp $readline; my ($key , $value) = (split /::/, $readline); $data_ids{$key} = $value;**** } for my $key (keys %data_ids) { $cChipId = $data_ids{'chipid'}; $cSubVersId = $data_ids{'subversid'}; } }
        if result is correct why the warning keeps on comming.
        i am going through perlintro doc ..thanks

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1132064]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2024-04-25 04:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found