First of all, I'd like to apologize for not using the HTML tags.
I'm learning HTML together with Perl, so thanks for bearing with me during my learning curve and for the warm welcome.
With the feedback I've got so far I managed to get the while loop working the way I wanted! :)
Content of 'input.txt':
Monday
Saturday
Sunday
#!/bin/perl
use strict;
use warnings;
my $input_file = 'input.txt';
my $output_file = 'output.txt';
open(my $in_file,'<', $input_file) or die "Can not open file $input_fi
+le for writing: $!.\n";
open(my $out_file,'>', $output_file) or die "Can not open file $output
+_file for writing: $!.\n";
if (grep{/Monday/} $in_file) {
} else {
seek $in_file, 0, 0;
while (<$in_file>) {
print $out_file $_;
if ($. == 1) {
print $out_file "Friday\n";
}
}
}
close($in_file);
close($out_file);
In the above code, I have two issues:
- Else clause is alwayse executed, why (should only be executed if 'Friday' is not found in 'input.txt')?
- Empty block in the if statement; how can I avoid this?
Output of 'output.txt':
Monday
Friday
Saturday
Sunday
My ultimate gall is to have input.txt populated with 'Friday' if it is missing.
As far as I understand it, in Perl you first need to create a new file with the desired output then rename that file to the original name.
So in my case that would be with the rename function:
rename $output_file $input_file;
If there is a better way to get what I want, I'm open to suggestion.