Copy the text of each script and run it in Perl. You'll have to reset the name of "test.txt" to a file in the same directory in which you'll save the scripts, or you won't see any output.
The first script simply opens a file for reading and returns the input to screen.
# readFile1.pl # program opens a file, reads it, and prints # the content to STDOUT # first, create a variable that holds the path to the source file $source = "test.txt"; # assuming the file is in the same dir as the script # second, create a filehandle named 'SOURCE': # filehandles are created with the open() function; # the first parameter is the name of the filehandle, # the second is the path and name of the file open(SOURCE, "<$source"); # < is optional for reading files # get input from SOURCE while (<SOURCE>) # < > is a line input operator { # input now goes to $_ print $_; } close(SOURCE); # for good measure
The second script performs a simple string comparison and skips blank lines.
# readFile2.pl # program opens a file, reads it, and prints # the content to STDOUT # first, create a variable that holds the path to the source file $source = "test.txt"; # assuming the file is in same dir as the script # second, create a filehandle named 'SOURCE': # filehandles are created with the open() function; # the first parameter is the name of the filehandle, # the second is the path and name of the file open(SOURCE, "<$source"); # < is optional for reading files # get input from SOURCE while (<SOURCE>) # < > is a line input operator { # same as before, but now filter blank lines next if ($_ eq "\n"); print $_; } close(SOURCE); # for good measure
If the line-input operator is used in a list context, it returns a list in which each element is a line of the source file. The following script reads a file into an array and then iterates over the array.
# readFile3.pl # program opens a file, reads it into an array, sorts it by line, # and prints the content to STDOUT # first, create a variable that holds the path to the source file $source = "test.txt"; # assuming the file is in same dir as the script # second, create a filehandle named 'SOURCE': # filehandles are created with the open() function; # the first parameter is the name of the filehandle, # the second is the path and name of the file open(SOURCE, "<$source"); # < is optional for reading files @file = <SOURCE>; # read file content into array @file close(SOURCE); @sorted = sort(@file); # sort file content by line for ($i = 0; $i < @sorted; ++$i) { print $sorted[$i]; # print in sorted order }
Reading input from the keyboard works just the same way, except that the filehandle is set to <STDIN>
. The input, or "diamond," operator < >
passes each line of keyboard input to the default input variable, $_
. The diamond operator can also be used on its own as in: while(< >)
, but has a special use for inputting multiple files at runtime.