Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

How to extent the scope of local variable outside block??

by sumathigokul (Acolyte)
on May 13, 2015 at 12:17 UTC ( #1126543=perlquestion: print w/replies, xml ) Need Help??

sumathigokul has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks...Any idea how to print the value of $lines outside 'for loop', because i want to print the lase updated statement....

se strict; use warnings; open (IN1, "<design_modify1.vhd") or die; open (IN2, "<nets.txt") or die; open (OUT, ">output_file.vhd") or die; open (IN3, "<enabled_nets.txt") or die; my @nets = <IN2>; chomp @nets; my @enabled_nets = <IN3>; chomp @enabled_nets; my $lines = ""; while (<IN1>) { #print OUT; foreach my $i (0..$#nets) { if (s/\=\>\s+$nets[$i]\,/\=\>$enabled_nets[$i]\,/) { my $lines = $_; print "done"; print $lines; } } print OUT "$lines"; } close (IN1); close (IN2); close (IN3); close (OUT);

Replies are listed 'Best First'.
Re: How to extent the scope of local variable outside block??
by moritz (Cardinal) on May 13, 2015 at 13:06 UTC
Re: How to extent the scope of local variable outside block??
by Corion (Pope) on May 13, 2015 at 12:27 UTC
Re: How to extent the scope of local variable outside block??
by MidLifeXis (Monsignor) on May 13, 2015 at 13:11 UTC
    use strict; use warnings; open (IN1, "<design_modify1.vhd") or die; ##### Suggestion: use 3 a +rgument form and lexical open (IN2, "<nets.txt") or die; ##### file handles ou +t of habit. It can make open (OUT, ">output_file.vhd") or die; ##### some types of c +ode safer. open (IN3, "<enabled_nets.txt") or die; ##### open(my $fh, "<", $ +filename) or die "cannot open $filename: $!" my @nets = <IN2>; chomp @nets; my @enabled_nets = <IN3>; chomp @enabled_nets; my $lines = ""; ##### Defined here (I wil +l call it (1)) while (<IN1>) { ##### cuddle your braces +or not. Be consistent. #print OUT; ##### (1) should be defin +ed here instead, for ##### the smallest scope. foreach my $i (0..$#nets) { if (s/\=\>\s+$nets[$i]\,/\=\>$enabled_nets[$i]\,/) { my $lines = $_; ##### and here (I will ca +ll it (2)) ##### Make it '$lines = $ +_' (no 'my') ##### and you will probab +ly see your ##### expected results. print "done"; print $lines; ##### prints the value of + (2) } } print OUT "$lines"; ##### prints the value of + (1) } close (IN1); close (IN2); close (IN3); close (OUT);

    There are many other coding practice and preference annotations that I could make as well. If you wish to hear them, just ask.

    --MidLifeXis

Re: How to extent the scope of local variable outside block??
by ww (Archbishop) on May 13, 2015 at 16:55 UTC

    It's time to stop being a leech!

    We're here to help you learn, but not to do your job, nor even to do your job of educating yourself. This question clearly means you haven't read the most basic information about scoping nor about the implication of declarring variables my $var... nor -- well, you've provided too many examples of failing to help yourself to bother listing them all. A quick review of your posts says that's a consistent behavior.


    Questions containing the words "doesn't work" (or their moral equivalent) will usually get a downvote from me unless accompanied by:
    1. code
    2. verbatim error and/or warning messages
    3. a coherent explanation of what "doesn't work actually means.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1126543]
Approved by GotToBTru
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2020-11-30 20:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?