SlideShare a Scribd company logo
Read and Write Files
     with Perl




Paolo Marcatili - Programmazione 09-10
Agenda

> Perl IO
> Open a File
> Write on Files
> Read from Files
> While loop




                                                 2
        Paolo Marcatili - Programmazione 09-10
Perl IO

(IO means Input/Output)




Paolo Marcatili - Programmazione 09-10
Why IO?

Since now, Perl is

#! /usr/bin/perl -w
use strict; <- ALWAYYYYYSSSS!!!
my $string=”All work and no play makes Jack a
   dull boyn";
for (my $i=1;$i<100;$i++){
   print $string;
}
                                                   4
          Paolo Marcatili - Programmazione 09-10
Why IO?

But if we want to do the same
with a user-submitted string?




                                                 5
        Paolo Marcatili - Programmazione 09-10
Why IO?

But if we want to do the same
with a user-submitted string?


IO can do this!




                                                  6
         Paolo Marcatili - Programmazione 09-10
IO types

Main Inputs
> Keyboard
> File
> Errors
Main outputs
> Display
> File


                                                 7
        Paolo Marcatili - Programmazione 09-10
More than tomatoes

Let’s try it:

#! /usr/bin/perl -w
  use strict; my $string=<STDIN>;
  for (my $i=1;$i<100;$i++){
      print $string;
  }

                                                    8
           Paolo Marcatili - Programmazione 09-10
Rationale

Read from and write to different media

STDIN means standard input (keyboard)
  ^
  this is a handle
<SMTH> means
“read from the source corresponding to handle SMTH”



                                                      9
           Paolo Marcatili - Programmazione 09-10
Handles

Handles are just streams “nicknames”
Some of them are fixed:
STDIN     <-default is keyboard
STDOUT <-default is display
STDERR <-default is display
Some are user defined (files)


                                                 10
        Paolo Marcatili - Programmazione 09-10
Open/Write a file




Paolo Marcatili - Programmazione 09-10
open

We have to create a handle for our file
open(OUT, “>”,”out.txt”) or die(“Error opening out.txt: $!”);
     ^
  N.B. : it’s user defined, you decide it
Tip
“<“,”out.txt” <- read from out.txt
“>”,”out.txt” <- write into out.txt
“>>”,”out.txt” <- append to out.txt

                                                           12
            Paolo Marcatili - Programmazione 09-10
close

When finished we have to close it:
close OUT;

If you dont, Santa will bring no gift.




                                                      13
             Paolo Marcatili - Programmazione 09-10
Print OUT

#! /usr/bin/perl -w
use strict;
open(OUT, ">”,”out.txt") || die("Error opening out.txt: $!");
print "type your claim:n";
my $string=<STDIN>;
for (my $i=1;$i<100;$i++){
   print OUT $string;
}
close OUT;

Now let’s play with <,>,>> and file permissions
                                                            14
             Paolo Marcatili - Programmazione 09-10
Read from Files




Paolo Marcatili - Programmazione 09-10
Read

open(IN, “<song.txt”) or die(“Error opening song.txt: $!”);
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;
print <IN>;

close IN;



                                                              16
               Paolo Marcatili - Programmazione 09-10
Read with loops

Problems:
> It’s long
> File size unknown

solution:
Use loops



                                                 17
        Paolo Marcatili - Programmazione 09-10
While loop




Paolo Marcatili - Programmazione 09-10
While


while (condition){
               do something…

}




                                                 19
        Paolo Marcatili - Programmazione 09-10
While - for differences

While                       For

> Undetermined              > Determined
> No counter                > Counter




                                                 20
        Paolo Marcatili - Programmazione 09-10
While example
Approx. solution of x^2-2=0
(Newton’s method)

my $sol=0.5;
my $err=$sol**2-2;
while ($err>.1){
$sol-=($sol**2-2)/(2*$sol);
$err=$sol**2-2;
print “Error=$errn”;
}
                                                    21
           Paolo Marcatili - Programmazione 09-10
Read with while

#! /usr/bin/perl -w
use strict;
open(MOD, "<IG.pdb") || die("Error opening
   IG.pdb: $!");

while (my $line=<MOD>){
   print substr($line,0,6)."n";
}
close MOD;



                                                      22
             Paolo Marcatili - Programmazione 09-10
Redirect outputs




Paolo Marcatili - Programmazione 09-10
Redirections

 #!/usr/bin/perl
 open(STDOUT, ">foo.out") || die "Can't redirect
 stdout";
 open(STDERR, ">&STDOUT") || die "Can't dup stdout";

 select(STDERR); $| = 1;          # make unbuffered
 select(STDOUT); $| = 1;          # make unbuffered

 close(STDOUT);
 close(STDERR);


                                                      24
         Paolo Marcatili - Programmazione 09-10
@ARGV




Paolo Marcatili - Programmazione 09-10
Command Line Arguments

> Command line arguments in Perl are extremely easy.
> @ARGV is the array that holds all arguments passed in from
  the command line.
    > Example:
        > % ./prog.pl arg1 arg2 arg3
    > @ARGV would contain ('arg1', arg2', 'arg3)


> $#ARGV returns the number of command line arguments that
  have been passed.
    > Remember $#array is the size of the array!




                                                               26
             Paolo Marcatili - Programmazione 09-10
Quick Program with @ARGV

> Simple program called log.pl that takes in a number
  and prints the log base 2 of that number;

      #!/usr/local/bin/perl -w
      $log = log($ARGV[0]) / log(2);
      print “The log base 2 of $ARGV[0] is $log.n”;


> Run the program as follows:
   > % log.pl 8
> This will return the following:
   > The log base 2 of 8 is 3.



                                                        27
            Paolo Marcatili - Programmazione 09-10
$_

> Perl default scalar value that is used when a
  variable is not explicitly specified.
> Can be used in
     > For Loops
     > File Handling
     > Regular Expressions




                                                    28
           Paolo Marcatili - Programmazione 09-10
$_ and For Loops

> Example using $_ in a for loop

    @array = ( “Perl”, “C”, “Java” );
    for(@array) {
        print $_ . “is a language I known”;
    }

    > Output :
      Perl is a language I know.
      C is a language I know.
      Java is a language I know.




                                                       29
              Paolo Marcatili - Programmazione 09-10
$_ and File Handlers

> Example in using $_ when reading in a file;

   while( <> ) {
        chomp $_;               # remove the newline char
        @array = split/ /, $_; # split the line on white space
          # and stores data in an array
   }

> Note:
   > The line read in from the file is automatically store in the
     default scalar variable $_




                                                                   30
            Paolo Marcatili - Programmazione 09-10
Opendir, readdir




Paolo Marcatili - Programmazione 09-10
Opendir & readdir
> Just like open, but for dirs

# load all files of the "data/" folder into the @files array
opendir(DIR, ”$ARGV[0]");
@files = readdir(DIR);
closedir(DIR);

# build a unsorted list from the @files array:
print "<ul>";
 foreach $file (@files) {
   next if ($file eq "." or $file eq "..");
   print "<li><a href="$file">$file</a></li>";
}
 print "</ul>";
                                                             32
             Paolo Marcatili - Programmazione 09-10

More Related Content

KEY
Anatomy of a PHP Request ( UTOSC 2010 )
PDF
Data Types Master
PDF
OSDC.TW - Gutscript for PHP haters
PDF
An introduction to PHP 5.4
ODP
Отладка в GDB
ODP
PHP Tips for certification - OdW13
ODP
Maybe you do not know that ...
PDF
Linux shell script-1
Anatomy of a PHP Request ( UTOSC 2010 )
Data Types Master
OSDC.TW - Gutscript for PHP haters
An introduction to PHP 5.4
Отладка в GDB
PHP Tips for certification - OdW13
Maybe you do not know that ...
Linux shell script-1

What's hot (20)

PDF
Advanced modulinos trial
PDF
Php arduino
KEY
SPL, not a bridge too far
PDF
Hachiojipm11
PPT
Php mysql
PDF
Advanced modulinos
PPTX
Introduction to Perl Programming
PDF
08 Advanced PHP #burningkeyboards
KEY
Good Evils In Perl (Yapc Asia)
DOCX
PDF
Javascript basics
PDF
Old Oracle Versions
PDF
Code Generation in PHP - PHPConf 2015
PDF
Perl6 grammars
PDF
Quick tour of PHP from inside
PDF
Phpをいじり倒す10の方法
PDF
Melhorando sua API com DSLs
PDF
CyberLink LabelPrint 2.5 Exploitation Process
PPTX
Exploit Development: EzServer Buffer Overflow oleh Tom Gregory
PDF
SfCon: Test Driven Development
Advanced modulinos trial
Php arduino
SPL, not a bridge too far
Hachiojipm11
Php mysql
Advanced modulinos
Introduction to Perl Programming
08 Advanced PHP #burningkeyboards
Good Evils In Perl (Yapc Asia)
Javascript basics
Old Oracle Versions
Code Generation in PHP - PHPConf 2015
Perl6 grammars
Quick tour of PHP from inside
Phpをいじり倒す10の方法
Melhorando sua API com DSLs
CyberLink LabelPrint 2.5 Exploitation Process
Exploit Development: EzServer Buffer Overflow oleh Tom Gregory
SfCon: Test Driven Development
Ad

Viewers also liked (20)

PPT
Iostreams
DOCX
java copy file program
PDF
I/O in java Part 1
PPTX
2CPP17 - File IO
PDF
Servlet Event framework
PDF
Java I/O Part 2
PPS
Files & IO in Java
PPT
Chapter 6 Java IO File
PPT
Chapter 5 Class File
PDF
JRuby: Pushing the Java Platform Further
PPTX
Featuring JDK 7 Nio 2
PPTX
Java Tutorial Lab 6
PDF
Java IO
PPTX
Reading and writting
PPT
File io
PPT
Various io stream classes .47
PDF
I/O In Java Part 2
PDF
Xlab #1: Advantages of functional programming in Java 8
PPTX
Java Input Output (java.io.*)
PDF
Java Course 8: I/O, Files and Streams
Iostreams
java copy file program
I/O in java Part 1
2CPP17 - File IO
Servlet Event framework
Java I/O Part 2
Files & IO in Java
Chapter 6 Java IO File
Chapter 5 Class File
JRuby: Pushing the Java Platform Further
Featuring JDK 7 Nio 2
Java Tutorial Lab 6
Java IO
Reading and writting
File io
Various io stream classes .47
I/O In Java Part 2
Xlab #1: Advantages of functional programming in Java 8
Java Input Output (java.io.*)
Java Course 8: I/O, Files and Streams
Ad

Similar to Perl IO (20)

PPTX
Master perl io_2011
PDF
Regexp Master
ODP
Perl Moderno
PPT
Hashes Master
PDF
Getting modern with logging via log4perl
ODP
Perl one-liners
KEY
groovy & grails - lecture 2
PDF
2010 Smith Scripting101
PDF
Good Evils In Perl
PDF
Perl Sucks - and what to do about it
PDF
Una historia de ds ls en ruby
PDF
Yapc::NA::2009 - Command Line Perl
DOC
Auto start
DOC
Auto start
PDF
Overloading Perl OPs using XS
PDF
Bag of tricks
PPT
Perl Intro 4 Debugger
PPT
Verilog Lecture5 hust 2014
PPT
Bioinformatica 29-09-2011-p1-introduction
PPTX
Perl courseparti
Master perl io_2011
Regexp Master
Perl Moderno
Hashes Master
Getting modern with logging via log4perl
Perl one-liners
groovy & grails - lecture 2
2010 Smith Scripting101
Good Evils In Perl
Perl Sucks - and what to do about it
Una historia de ds ls en ruby
Yapc::NA::2009 - Command Line Perl
Auto start
Auto start
Overloading Perl OPs using XS
Bag of tricks
Perl Intro 4 Debugger
Verilog Lecture5 hust 2014
Bioinformatica 29-09-2011-p1-introduction
Perl courseparti

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PPTX
Cloud computing and distributed systems.
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
Big Data Technologies - Introduction.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Empathic Computing: Creating Shared Understanding
Electronic commerce courselecture one. Pdf
Cloud computing and distributed systems.
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Encapsulation_ Review paper, used for researhc scholars
20250228 LYD VKU AI Blended-Learning.pptx
The AUB Centre for AI in Media Proposal.docx
Machine learning based COVID-19 study performance prediction
Advanced methodologies resolving dimensionality complications for autism neur...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Big Data Technologies - Introduction.pptx
Unlocking AI with Model Context Protocol (MCP)
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Review of recent advances in non-invasive hemoglobin estimation
Empathic Computing: Creating Shared Understanding

Perl IO

  • 1. Read and Write Files with Perl Paolo Marcatili - Programmazione 09-10
  • 2. Agenda > Perl IO > Open a File > Write on Files > Read from Files > While loop 2 Paolo Marcatili - Programmazione 09-10
  • 3. Perl IO (IO means Input/Output) Paolo Marcatili - Programmazione 09-10
  • 4. Why IO? Since now, Perl is #! /usr/bin/perl -w use strict; <- ALWAYYYYYSSSS!!! my $string=”All work and no play makes Jack a dull boyn"; for (my $i=1;$i<100;$i++){ print $string; } 4 Paolo Marcatili - Programmazione 09-10
  • 5. Why IO? But if we want to do the same with a user-submitted string? 5 Paolo Marcatili - Programmazione 09-10
  • 6. Why IO? But if we want to do the same with a user-submitted string? IO can do this! 6 Paolo Marcatili - Programmazione 09-10
  • 7. IO types Main Inputs > Keyboard > File > Errors Main outputs > Display > File 7 Paolo Marcatili - Programmazione 09-10
  • 8. More than tomatoes Let’s try it: #! /usr/bin/perl -w use strict; my $string=<STDIN>; for (my $i=1;$i<100;$i++){ print $string; } 8 Paolo Marcatili - Programmazione 09-10
  • 9. Rationale Read from and write to different media STDIN means standard input (keyboard) ^ this is a handle <SMTH> means “read from the source corresponding to handle SMTH” 9 Paolo Marcatili - Programmazione 09-10
  • 10. Handles Handles are just streams “nicknames” Some of them are fixed: STDIN <-default is keyboard STDOUT <-default is display STDERR <-default is display Some are user defined (files) 10 Paolo Marcatili - Programmazione 09-10
  • 11. Open/Write a file Paolo Marcatili - Programmazione 09-10
  • 12. open We have to create a handle for our file open(OUT, “>”,”out.txt”) or die(“Error opening out.txt: $!”); ^ N.B. : it’s user defined, you decide it Tip “<“,”out.txt” <- read from out.txt “>”,”out.txt” <- write into out.txt “>>”,”out.txt” <- append to out.txt 12 Paolo Marcatili - Programmazione 09-10
  • 13. close When finished we have to close it: close OUT; If you dont, Santa will bring no gift. 13 Paolo Marcatili - Programmazione 09-10
  • 14. Print OUT #! /usr/bin/perl -w use strict; open(OUT, ">”,”out.txt") || die("Error opening out.txt: $!"); print "type your claim:n"; my $string=<STDIN>; for (my $i=1;$i<100;$i++){ print OUT $string; } close OUT; Now let’s play with <,>,>> and file permissions 14 Paolo Marcatili - Programmazione 09-10
  • 15. Read from Files Paolo Marcatili - Programmazione 09-10
  • 16. Read open(IN, “<song.txt”) or die(“Error opening song.txt: $!”); print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; print <IN>; close IN; 16 Paolo Marcatili - Programmazione 09-10
  • 17. Read with loops Problems: > It’s long > File size unknown solution: Use loops 17 Paolo Marcatili - Programmazione 09-10
  • 18. While loop Paolo Marcatili - Programmazione 09-10
  • 19. While while (condition){ do something… } 19 Paolo Marcatili - Programmazione 09-10
  • 20. While - for differences While For > Undetermined > Determined > No counter > Counter 20 Paolo Marcatili - Programmazione 09-10
  • 21. While example Approx. solution of x^2-2=0 (Newton’s method) my $sol=0.5; my $err=$sol**2-2; while ($err>.1){ $sol-=($sol**2-2)/(2*$sol); $err=$sol**2-2; print “Error=$errn”; } 21 Paolo Marcatili - Programmazione 09-10
  • 22. Read with while #! /usr/bin/perl -w use strict; open(MOD, "<IG.pdb") || die("Error opening IG.pdb: $!"); while (my $line=<MOD>){ print substr($line,0,6)."n"; } close MOD; 22 Paolo Marcatili - Programmazione 09-10
  • 23. Redirect outputs Paolo Marcatili - Programmazione 09-10
  • 24. Redirections #!/usr/bin/perl open(STDOUT, ">foo.out") || die "Can't redirect stdout"; open(STDERR, ">&STDOUT") || die "Can't dup stdout"; select(STDERR); $| = 1; # make unbuffered select(STDOUT); $| = 1; # make unbuffered close(STDOUT); close(STDERR); 24 Paolo Marcatili - Programmazione 09-10
  • 25. @ARGV Paolo Marcatili - Programmazione 09-10
  • 26. Command Line Arguments > Command line arguments in Perl are extremely easy. > @ARGV is the array that holds all arguments passed in from the command line. > Example: > % ./prog.pl arg1 arg2 arg3 > @ARGV would contain ('arg1', arg2', 'arg3) > $#ARGV returns the number of command line arguments that have been passed. > Remember $#array is the size of the array! 26 Paolo Marcatili - Programmazione 09-10
  • 27. Quick Program with @ARGV > Simple program called log.pl that takes in a number and prints the log base 2 of that number; #!/usr/local/bin/perl -w $log = log($ARGV[0]) / log(2); print “The log base 2 of $ARGV[0] is $log.n”; > Run the program as follows: > % log.pl 8 > This will return the following: > The log base 2 of 8 is 3. 27 Paolo Marcatili - Programmazione 09-10
  • 28. $_ > Perl default scalar value that is used when a variable is not explicitly specified. > Can be used in > For Loops > File Handling > Regular Expressions 28 Paolo Marcatili - Programmazione 09-10
  • 29. $_ and For Loops > Example using $_ in a for loop @array = ( “Perl”, “C”, “Java” ); for(@array) { print $_ . “is a language I known”; } > Output : Perl is a language I know. C is a language I know. Java is a language I know. 29 Paolo Marcatili - Programmazione 09-10
  • 30. $_ and File Handlers > Example in using $_ when reading in a file; while( <> ) { chomp $_; # remove the newline char @array = split/ /, $_; # split the line on white space # and stores data in an array } > Note: > The line read in from the file is automatically store in the default scalar variable $_ 30 Paolo Marcatili - Programmazione 09-10
  • 31. Opendir, readdir Paolo Marcatili - Programmazione 09-10
  • 32. Opendir & readdir > Just like open, but for dirs # load all files of the "data/" folder into the @files array opendir(DIR, ”$ARGV[0]"); @files = readdir(DIR); closedir(DIR); # build a unsorted list from the @files array: print "<ul>"; foreach $file (@files) { next if ($file eq "." or $file eq ".."); print "<li><a href="$file">$file</a></li>"; } print "</ul>"; 32 Paolo Marcatili - Programmazione 09-10