There are at least a couple of different ways to do this.
Here's one example using Path::Tiny:
use strict;
use warnings;
use feature 'say';
use Path::Tiny;
my $file = 'test_file.txt';
my @lines = path($file)->lines({chomp => 1});
my $line_number = 1;
foreach my $line (@lines) {
say "$line_number: $line";
$line_number++;
}
Here's an example that uses Tie::File:
use strict;
use warnings;
use feature 'say';
use Tie::File;
my $file = 'test_file.txt';
tie @lines, 'Tie::File', $file or die "Unable to open file '$file': $!
+";
my $line_number = 1;
foreach my $line (@lines) {
say "$line_number: $line";
$line_number++;
}
Here's an example that does not use any modules:
use strict;
use warnings;
use feature 'say';
my $file = 'test_file.txt';
open(my $fh, "<", $file) or die "Unable to open file '$file': $!";
my $data;
{
local $/;
undef $/;
$data = <$fh>;
}
close($fh);
my @lines = split /\n/,$data;
my $line_number = 1;
foreach my $line (@lines) {
say "$line_number: $line";
$line_number++;
}