Presentation is loading. Please wait.

Presentation is loading. Please wait.

Perl I/O Learning Objectives: 1. To understand how to perform input from standard Input & how to process the input 2. To understand how to perform input.

Similar presentations


Presentation on theme: "Perl I/O Learning Objectives: 1. To understand how to perform input from standard Input & how to process the input 2. To understand how to perform input."— Presentation transcript:

1 Perl I/O Learning Objectives: 1. To understand how to perform input from standard Input & how to process the input 2. To understand how to perform input from file 3. To understand how to write [formatted] output to standard output

2 COMP111 Lecture 15 / Slide 2 Perl I/O Table of Content  Input from STDIN  Input from <>  Output to STDOUT  Printf formatted Output

3 COMP111 Lecture 15 / Slide 3 Input from STDIN (1)  Reading from STDIN is easy, and we have done it many times. $a = ;  In a scalar context, this gives the next line of input, or undef if there are are no more lines (the user has hit CTRL-d ).  In a list context, this gives all remaining lines (all the lines until the user hits CTRL-d ). @a = ; Each element is one line, and includes the terminating newline (the last line may or may not have a newline).

4 COMP111 Lecture 15 / Slide 4 Input from STDIN (2)  Typically, a program will read in one line at a time and process the line: while(defined($line = )){ # process line print "$line"; }  In the above example, defined() returns true unless its argument is undef.  As long as a line has been read, returns a defined value, and the loop continues.  When has no more lines to read (it hits CTRL-d ), it returns undef, terminating the loop.

5 COMP111 Lecture 15 / Slide 5  Here is an example of program input and output.  White text is typed by the user, green text is printed by the program or shell. $ cat line1 #!/usr/local/bin/perl5 -w while(defined($line = )){ # process line print "$line"; } $ line1 hi test [CTRL-d] $ Input from STDIN (3)

6 COMP111 Lecture 15 / Slide 6  We can also read and print the lines altogether.  Again, white text is typed by the user, green text is printed by the program or shell. $ cat line2 #!/usr/local/bin/perl5 -w @lines = ; # process lines print "@lines"; $ line3 hi test [CTRL-d] hi test $ Input from STDIN (4)

7 COMP111 Lecture 15 / Slide 7  Perl has a shortcut for reading a value from into $_.  Whenever a condition consists solely of, Perl automatically copies the line into $_. while( ){ # same as: while(defined($_ = )){ chomp; # same as: chomp "$_"; print "$_\n"; }  $_ is the default for many operations, such as chomp and print. Input from STDIN (5)

8 COMP111 Lecture 15 / Slide 8  Another way to read input is with <>.  <> returns a single line in a scalar context, or all the remaining lines in a list context.  However, unlike, <> gets its data from the file (or files) specified on the command line. $ cat f1 1 $ cat f2 2 $ cat mycat #!/usr/local/bin/perl5 -w while(<>){ print; } $ mycat f1 f2 1 2 $ Input from <> (1)

9 COMP111 Lecture 15 / Slide 9  If you do not specify any filenames on the command line, <> reads from standard input automatically. $ cat mycat #!/usr/local/bin/perl5 -w while(<>){ print; } $ mycat hi test [CTRL-d] $  <> is the easiest way to read files in Perl (we will learn more advanced ways later). Input from <> (2)

10 COMP111 Lecture 15 / Slide 10 Output to STDOUT  We have also often used print.  The print function takes a list of strings, and sends each to STDOUT, without adding any characters between them. print "Hi Bill!\n"; print "Hi ", "Bill!", "\n"; print("Hi ", "Bill!", "\n");  Sometimes, you will need to add parentheses to print, especially when the first thing starts with a left parenthesis: print (1+1), "cheap Bill\n"; # problem! print ((1+1), "cheap Bill\n"); # ok print 1+1, "cheap Bill\n"; # also ok

11 COMP111 Lecture 15 / Slide 11  You may wish to have more control over your output than print provides.  The printf function takes a list of arguments, where the first argument is a format control string, which defines how to print the remaining arguments (like printf in C). printf "%s %d %f\n", $s, $n, $real;  Format types: strings%s integer numbers%d floating-point numbers%f printf Formatted Output (1)

12 COMP111 Lecture 15 / Slide 12 $ cat printf1 #!/usr/local/bin/perl5 -w $s = "1234567890"; $n = 12345; $real = 1234567.123; printf "%15s %5d %10.2f\n", $s, $n, $real; $ cat printf1 1234567890 12345 1234567.12 $  This example prints $s in a 15-character field, then space, then $n as a decimal integer in a 5-character field, then another space, then $real as a floating-point value with 2 decimal places in a 10-character field, and finally a newline. printf Formatted Output (2)


Download ppt "Perl I/O Learning Objectives: 1. To understand how to perform input from standard Input & how to process the input 2. To understand how to perform input."

Similar presentations


Ads by Google