#!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; # Creates a shortcut for calling Data::Dumper, writing dd is enough to call module Main( @ARGV ); # main function, takes every file (as an argument) that is passed to @ARGV, might be command line or files #that are read in exit( 0 ); #not really a clue, maybe main exits if no arguments are passed to it #This defines the subrotine Main which is called in line 6 (in my editor at least) sub Main { dd( -argv, \@ARGV ); #calls Data::Dumper via reference => possibly to print which files are being passed as arguments (control function) for my $ar ( @ARGV ){ #a for loop to treat each file that has been passed as argument to @ARGV with the sub Sky # each individual file assigned to $ar is in turn passed as a parameter to the subroutine Sky( $ar ); } Sky(6); #not really a clue => Does that mean that the sub stops after six runs } #defining subroutine Sky sub Sky { my( $ra ) = @_; # variable for the argument(s) passed to the sub, @_ accepts every argument passed to sub, i.e. the files passed to main dd( -ra, $ra ); #print data strucutre of the files -parameter -ra dd( -args, \@_ ); #print data strucutre of the arguments passed to the subroutine } __END__ $ perl sky ("-argv", []) ("-ra", 6) ("-args", [6]) # explains what sky does $ perl sky a b c #if I were to pass a, b, c ("-argv", ["a", "b", "c"]) #@ARGV would contain ["a", "b", "c"] #Lists individual files as they are passed to both the sub Sky and sub Main ("-ra", "a") ("-args", ["a"]) ("-ra", "b") ("-args", ["b"]) ("-ra", "c") ("-args", ["c"]) #Still no clue about the number, sorrry ("-ra", 6) ("-args", [6])