Marcool has asked for the wisdom of the Perl Monks concerning the following question:
Good day to you all wise monks. I come to you with a question.
I really, really cannot understand why this code doesn't work the way I expect it to. I have ideas as to why it doesn't, but I just can't seem to correct it.
#!/usr/bin/perl use strict; use warnings; sub mysub{ #Do some clean up before exit. }; my $fh; unless (open ( $fh, '>' , "file.txt")) { mysub(); print "Cannot open file.txt for writing.\n"; exit 0 ; }; my $condition = 0; do { my $text = "Text to be written over file.txt.\n"; print { $fh } "$text"; #... other stuff goes on, eventually changing $condition to 1 } until ($condition); close ($fh); mysub(); exit 1;
This, rather than produce a file named "file.txt" with "Text to be written over file.txt." in it, produces a file named "file.txt" with as many lines of said text as the do...until loop ran.
In a nutshell, it would seem that print is appending rather than clobbering.
I would imagine that there is some issue related to scope of the filehandler variable related to the do...until loop, but I have tried multiple fixes, and none seem to give me the expected behaviour.
Your help will be much appreciated.
Best regards, Mark.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Writing to file with filehandler in variable, scope issue, clobber becomes append
by Athanasius (Archbishop) on Apr 13, 2016 at 14:22 UTC | |
by Marcool (Acolyte) on Apr 13, 2016 at 14:37 UTC | |
by Athanasius (Archbishop) on Apr 13, 2016 at 15:04 UTC | |
by davido (Cardinal) on Apr 13, 2016 at 15:12 UTC | |
by Marcool (Acolyte) on Apr 13, 2016 at 18:07 UTC | |
|
Re: Writing to file with filehandler in variable, scope issue, clobber becomes append
by Discipulus (Canon) on Apr 13, 2016 at 20:03 UTC |