Write a Perl program to display contents of the file in sorted order(ascending) based on line numbers given via command-line arguments. Note that the line numbers can be in any order and throw an error if the line number is large.
Perl
Output:
Example 2: Reading the same script file
Perl
Output:
If the line number passed is not in the file:
Syntax: perlApproach: Sort the line numbers excluding the first argument which is file name. Once sorted read whole content of the file into an array using single statement (my @file = <FNAME>). Now loop through the sorted line numbers and display the file content by passing line number as index to file array like (print "$file[$var-1]\n";). Example 1: Consider a file Hello.txtFilename.plFile_to_be_read.abcx y zHere, Filename.pl is the name of the file that contains the perl script File_to_be_read.abc is the name of the file which is to be read. This file can be of any type. Ex- text, script, etc. x y z are the line numbers which are to be printed.
#!/usr/bin/perl
use warnings;
use strict;
# Check if line numbers are given as an input
if (@ARGV < 2)
{
die "usage: pick file_name line_no1 line_no2 ...";
}
open FNAME, $ARGV[0] or die "cannot open file";
# Exclude the first argument
# for sorting line numbers
shift (@ARGV);
my @line_numbers = sort { $a <=> $b } @ARGV;
# Read whole file content into an array
# and removes new line using chomp()
chomp (my @file = <FNAME>);
foreach my $var (@line_numbers)
{
if ($var> $#file)
{
print "Line number $var is too large\n";
next;
}
print "$file[$var-1]\n";
}
close FNAME;
Example 2: Reading the same script file
#!/usr/bin/perl
use warnings;
use strict;
# Check if line numbers are given as an input
if (@ARGV < 2)
{
die "usage: pick file_name line_no1 line_no2 ...";
}
open FNAME, $ARGV[0] or die "cannot open file";
# Exclude the first argument
# for sorting line numbers
shift (@ARGV);
my @line_numbers = sort { $a <=> $b } @ARGV;
# Read whole file content into an array
# and removes new line using chomp()
chomp (my @file = <FNAME>);
foreach my $var (@line_numbers)
{
if ($var> $#file)
{
print "Line number $var is too large\n";
next;
}
print "$file[$var-1]\n";
}
close FNAME;
If the line number passed is not in the file: