Following the constructive feedback here is the working code:
#!/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 (not (grep{/Monday/} <$in_file>) { seek $in_file, 0, 0; $. = 0; while (<$in_file>) { print $out_file $_; if ($. == 1) { print $out_file "Friday\n"; } } } close($in_file); close($out_file);
The same code but with 'unless' instead of 'if (not)'
#!/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"; unless (grep{/Monday/} <$in_file>) { seek $in_file, 0, 0; $. = 0; while (<$in_file>) { print $out_file $_; if ($. == 1) { print $out_file "Friday\n"; } } } close($in_file); close($out_file);
As 'seek' could probably be avoided if I rethink things in a different way, I'll get back to this when I have clarified my thoughts
I appriciated
In reply to Re^2: While loop not printing anything after using grep
by skjeiu
in thread While loop not printing anything after using grep
by skjeiu
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |