Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^2: Too much recursion

by jrvd (Novice)
on Jun 27, 2013 at 15:29 UTC ( #1041037=note: print w/replies, xml ) Need Help??

in reply to Re: Too much recursion
in thread Too much recursion


Thanks for your help. I have put my entire code so that you may see where my variables were initialized.

#!/usr/bin/perl use strict; use warnings; my $fileName = "version.txt"; my $fileDest = "version_modified.txt"; die "Problème d'ouverture du fichier $fileName" unless open(my $fh, '< +', $fileName); die "Problème de création du fichier $fileDest" unless open(my $fd, '> +', $fileDest); my $tot = 0; my $tot2 = 0; sub hostname; sub hostname{ print $fd $_; while (<$fh>){ if ($_ =~ /^hostname /){ hostname; }else{ # print $_; $tot2++; } } $tot++; } while(<$fh>){ hostname if ($_ =~ /^hostname /); } print $tot."\n"; print $tot2."\n"; close $fh; close $fd;

I am not sure if the code you suggested should only replace a certain part. I might not have correctly expressed what I was looking for however. What I need to do is find the line containing "hostname ", print that, then do some various modifications on the following lines until I find another "hostname " and repeat. Right now, all I was doing was incrementing $tot2 until I got this to work but eventually this will change.



Replies are listed 'Best First'.
Re^3: Too much recursion
by mprentice (Sexton) on Jun 27, 2013 at 15:46 UTC

    Seems like you can do the same without a recursion:

    Update: Add "print $fd $_" to preserve original behavior.

    sub hostname{ print $fd $_; while (<$fh>){ if ($_ =~ /^hostname /){ print $fd $_; $tot++; next; }else{ $tot2++; } } $tot++; # keep initial increment }

      Works exactly the way I need it! Thanks!


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1041037]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (8)
As of 2017-11-22 14:46 GMT
Find Nodes?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:

    Results (326 votes). Check out past polls.