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++; } #### 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++; } #### 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++; }