Perl

How to iterate or loop through all elements of an array in a perl script

Here you can see multiple ways of implementing array iterator.

Example1:

This example reads each element of the array to a variable “$item” in a loop.

@myarray = ('One', 'Two', 'Three');
foreach $item (@myarray) {
  print $item;
}

Example2:

This example avoids intermediate variable “$item” shown in the above script. However if you have nested loops, this method is not suitable. Each element is available in a special variable “$_” inside the loop.

@myarray = ('One', 'Two', 'Three');
foreach (@myarray) {
  print $_;
}

Example3:

This example is similar to “for” loop style of a C programmer .

@myarray = ('One', 'Two', 'Three');
for($i=0; $i <= $#myarray; More >

How to pass and read function or subroutine arguments in a perl script

All the arguments passed to a perl subroutine are packed in an array “@_”. The following script shows you how to access function arguments in a subroutine.

[nick@techpulp ~]# cat funargs.pl
#!/usr/bin/perl

sub myfun
{
  my $i = 0;
  $nargs = $#_+1;
  print "Number of arguments: $nargs\n";
  foreach $arg (@_) {
    $i++;
    print "Arg $i: $arg\n";
  }
}

myfun("One", "Two");
[nick@techpulp ~]#

Let us run the above script.

[nick@techpulp ~]# ./funargs.pl
Number of arguments: 2
Arg 1: One
Arg 2: Two
[nick@techpulp ~]#

If the subroutine is expected to take fixed number of arguments, you can simplify the script as following.

[nick@techpulp ~]# More >

How to read input line by line in a perl script

The following perl script reads one line at a time from the standard input which can be from normal console or a redirected file using pipes.

[nick@techpulp ~]# cat readline.pl
#!/usr/bin/perl

$line = 0;
while (<>) {
  $line++;
  print "Line $line: " . $_;
}
[nick@techpulp ~]# chmod +x readline.pl
[nick@techpulp ~]#

In the above script, The “<>” reads a line from standard input file of the script and “$_” contains the last read data.

For input, let us consider following file (input.txt) which contains four lines.

[nick@techpulp ~]# cat input.txt
first line
second line
third line
fourth line
[nick@techpulp ~]#

Now let More >

How to read or access command line arguments in a perl script

All command line arguments passed to a perl script are stored in a array named @ARGV. So $ARGV[0] contains first argument, $ARGV[1] contains second argument and so on. As all command line arguments are packed in an array, you can use $#ARGV to get the index of last element. That means ($#ARGV+1) will give you number command line arguments passed to the script.

Look at the following example, that iterates through all command line arguments passed.

[nick@techpulp ~]# cat cmline.pl
#!/usr/bin/perl

$nargs = $#ARGV + 1;
print "you have passed $nargs command line arguments\n";

for($i=0;$i<$nargs;$i++) {
   print "Arg $i: $ARGV[$i]\n";
}
[nick@techpulp More >