SlideShare a Scribd company logo
Read and Write Files
                        with Perl




Bioinformatics master course, „11/‟12   Paolo Marcatili
Resume
 •   Scalars                   $
 •   Arrays                    @
 •   Hashes                      %
 •   Foreach                    |-@ $
 •   Length                    …
 •   Split                    $@



Bioinformatics master course, „11/‟12    Paolo Marcatili
Agenda
 •   For
 •   Conditions
 •   Perl IO
 •   Open a File
 •   Write on Files
 •   Read from Files
 •   While loop

Bioinformatics master course, „11/‟12   Paolo Marcatili
New cycle!
 for (my $i=0;$i<100;$i++){
    print “$i n”;
 }

 Can we rewrite foreach using for?

 Hint: scalar @array is the array size

Bioinformatics master course, „11/‟12   Paolo Marcatili
Conditions
 if (condition){
 Do something
 }




Bioinformatics master course, „11/‟12   Paolo Marcatili
Conditions
 if ($time>5){
 print “Time to go!n”;
 }




Bioinformatics master course, „11/‟12   Paolo Marcatili
Conditions
 if ($day == 27){
 print “Wage!n”;
 }




Bioinformatics master course, „11/‟12   Paolo Marcatili
Conditions
 if ($day eq “Sunday”){
 print “Alarm off!n”;
 }
 else{

 print “snoozen”;

 }

Bioinformatics master course, „11/‟12   Paolo Marcatili
Perl IO

                     (IO means Input/Output)




Bioinformatics master course, „11/‟12         Paolo Marcatili
Why IO?
 Since now, Perl is

 #! /usr/bin/perl -w
 use strict; #<- ALWAYS!!!
 my $string=”All work and no play makes Jack a
   dull boyn";
 for (my $i=1;$i<100;$i++){
    print $string;
 }


Bioinformatics master course, „11/‟12   Paolo Marcatili
Why IO?
 But if we want to do the same
 with a user-submitted string?




Bioinformatics master course, „11/‟12   Paolo Marcatili
Why IO?
 But if we want to do the same
 with a user-submitted string?


 IO can do this!




Bioinformatics master course, „11/‟12   Paolo Marcatili
IO types
 Main Inputs
 • Keyboard
 • File
 • Errors
 Main outputs
 • Display
 • File


Bioinformatics master course, „11/‟12   Paolo Marcatili
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;
   }


Bioinformatics master course, „11/‟12   Paolo Marcatili
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”




Bioinformatics master course, „11/‟12   Paolo Marcatili
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)



Bioinformatics master course, „11/‟12   Paolo Marcatili
Open/Write a file




Bioinformatics master course, „11/‟12   Paolo Marcatili
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


Bioinformatics master course, „11/‟12          Paolo Marcatili
close
 When finished we have to close it:
 close OUT;

 If you dont, Santa will bring no gift.




Bioinformatics master course, „11/‟12           Paolo Marcatili
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

Bioinformatics master course, „11/‟12   Paolo Marcatili
Read from Files




Bioinformatics master course, „11/‟12   Paolo Marcatili
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;



Bioinformatics master course, „11/‟12          Paolo Marcatili
Read with loops
 Problems:
 • It‟s long
 • File size unknown

 solution:
 Use loops



Bioinformatics master course, „11/‟12   Paolo Marcatili
While loop




Bioinformatics master course, „11/‟12   Paolo Marcatili
While

 while (condition){
               do something…

 }




Bioinformatics master course, „11/‟12      Paolo Marcatili
While - for differences
   While                                For

   • Undetermined                       > Determined
   • No counter                         > Counter




Bioinformatics master course, „11/‟12         Paolo Marcatili
While example
   Approx. solution of x^2-2=0
   (Newton‟s method)

   my $sol=0.5;
   my $err=$sol**2-2;
   while ($err**2>.001){
   $sol-=($sol**2-2)/(2*$sol);
   $err=$sol**2-2;
   print “X is $solnError=$errn”;
   }
Bioinformatics master course, „11/‟12   Paolo Marcatili
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;




Bioinformatics master course, „11/‟12   Paolo Marcatili
Redirect outputs




Bioinformatics master course, „11/‟12   Paolo Marcatili
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);




Bioinformatics master course, „11/‟12        Paolo Marcatili
@ARGV




Bioinformatics master course, „11/‟12   Paolo Marcatili
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 -1 !




Bioinformatics master course, „11/‟12           Paolo Marcatili
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.



Bioinformatics master course, „11/‟12          Paolo Marcatili
$_
 • Perl default scalar value that is used when a
   variable is not explicitly specified.
 • Can be used in
      – For Loops
      – File Handling
      – Regular Expressions




Bioinformatics master course, „11/‟12        Paolo Marcatili
$_ 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.




Bioinformatics master course, „11/‟12            Paolo Marcatili
$_ 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 $_




Bioinformatics master course, „11/‟12          Paolo Marcatili
Opendir, readdir




Bioinformatics master course, „11/‟12   Paolo Marcatili
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>";


Bioinformatics master course, „11/‟12            Paolo Marcatili

More Related Content

KEY
SPL, not a bridge too far
PDF
08 Advanced PHP #burningkeyboards
PPT
Quebec pdo
PPTX
Introducing PHP Latest Updates
PPT
PHP CLI: A Cinderella Story
PDF
Metadata-driven Testing
KEY
Php 101: PDO
SPL, not a bridge too far
08 Advanced PHP #burningkeyboards
Quebec pdo
Introducing PHP Latest Updates
PHP CLI: A Cinderella Story
Metadata-driven Testing
Php 101: PDO

What's hot (20)

PDF
Keeping objects healthy with Object::Exercise.
PDF
What's new in PHP 5.5
KEY
Building and Distributing PostgreSQL Extensions Without Learning C
PDF
Findbin libs
PDF
Linux Shellcode disassembling
PPTX
Java Bytecode Fundamentals - JUG.lv
DOCX
PDF
CLI, the other SAPI phpnw11
PDF
Php unit the-mostunknownparts
PDF
Melhorando sua API com DSLs
PDF
Hypers and Gathers and Takes! Oh my!
PDF
Short Introduction To "perl -d"
PDF
Cli the other sapi pbc11
PPT
Training on php by cyber security infotech (csi)
PDF
An introduction to PHP 5.4
PDF
Preparing code for Php 7 workshop
PDF
Introduction to Perl and BioPerl
PDF
Illustrated buffer cache
PPTX
07 - Bypassing ASLR, or why X^W matters
PDF
Introduction to PHP - Basics of PHP
Keeping objects healthy with Object::Exercise.
What's new in PHP 5.5
Building and Distributing PostgreSQL Extensions Without Learning C
Findbin libs
Linux Shellcode disassembling
Java Bytecode Fundamentals - JUG.lv
CLI, the other SAPI phpnw11
Php unit the-mostunknownparts
Melhorando sua API com DSLs
Hypers and Gathers and Takes! Oh my!
Short Introduction To "perl -d"
Cli the other sapi pbc11
Training on php by cyber security infotech (csi)
An introduction to PHP 5.4
Preparing code for Php 7 workshop
Introduction to Perl and BioPerl
Illustrated buffer cache
07 - Bypassing ASLR, or why X^W matters
Introduction to PHP - Basics of PHP
Ad

Viewers also liked (19)

DOC
大同大學附近商家人力資源問卷雷達圖
PPT
Unix Master
PDF
Regexp Master
PDF
Data Types Master
PPT
Machine Learning
PPT
人力資源管理導論(Click here to download)
PPT
01 職場人力現況分析(按此下載)
PDF
Perl Io Master
PPT
03 國際貨幣制度與匯兌(按此下載)
PPT
07 履歷表實作 (按此下載)
PPT
招募 甄選Recruitment & Selection (按此下載)
PPT
11員工福利管理
PPT
05 國際經營策略與組織結構(按此下載)
PPT
人力資源管理 概念及趨勢
PPT
05 如何寫一份漂亮的履歷表 (按此下載)
PPT
10薪酬管理
PPT
工作分析 工作設計
PPT
溝通Communication(按此下載)
PPT
04人力資源招募與甄選
大同大學附近商家人力資源問卷雷達圖
Unix Master
Regexp Master
Data Types Master
Machine Learning
人力資源管理導論(Click here to download)
01 職場人力現況分析(按此下載)
Perl Io Master
03 國際貨幣制度與匯兌(按此下載)
07 履歷表實作 (按此下載)
招募 甄選Recruitment & Selection (按此下載)
11員工福利管理
05 國際經營策略與組織結構(按此下載)
人力資源管理 概念及趨勢
05 如何寫一份漂亮的履歷表 (按此下載)
10薪酬管理
工作分析 工作設計
溝通Communication(按此下載)
04人力資源招募與甄選
Ad

Similar to Master perl io_2011 (20)

PDF
Master datatypes 2011
PDF
Master unix 2011
PDF
Perl IO
PPTX
Regexp master 2011
PDF
Lecture19-20
PDF
Lecture19-20
PPTX
Bioinformatica p1-perl-introduction
PPTX
Bioinformatics v2014 wim_vancriekinge
PDF
Lecture 22
PPT
Perl Intro 3 Datalog Parsing
PDF
IO Streams, Files and Directories
PDF
Tutorial perl programming basic eng ver
PDF
Scripting3
PPTX
Bioinformatics p1-perl-introduction v2013
PDF
Perl%20SYLLABUS%20PB
PDF
Perl%20SYLLABUS%20PB
PPT
2012 03 08_dbi
PPTX
2012 12 12_adam_v_final
PDF
Perl-Tutorial
PDF
Perl-Tutorial
Master datatypes 2011
Master unix 2011
Perl IO
Regexp master 2011
Lecture19-20
Lecture19-20
Bioinformatica p1-perl-introduction
Bioinformatics v2014 wim_vancriekinge
Lecture 22
Perl Intro 3 Datalog Parsing
IO Streams, Files and Directories
Tutorial perl programming basic eng ver
Scripting3
Bioinformatics p1-perl-introduction v2013
Perl%20SYLLABUS%20PB
Perl%20SYLLABUS%20PB
2012 03 08_dbi
2012 12 12_adam_v_final
Perl-Tutorial
Perl-Tutorial

Recently uploaded (20)

PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Electronic commerce courselecture one. Pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Approach and Philosophy of On baking technology
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPT
Teaching material agriculture food technology
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
MYSQL Presentation for SQL database connectivity
Per capita expenditure prediction using model stacking based on satellite ima...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Electronic commerce courselecture one. Pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Encapsulation_ Review paper, used for researhc scholars
Approach and Philosophy of On baking technology
Building Integrated photovoltaic BIPV_UPV.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
20250228 LYD VKU AI Blended-Learning.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Understanding_Digital_Forensics_Presentation.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Machine learning based COVID-19 study performance prediction
Unlocking AI with Model Context Protocol (MCP)
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Teaching material agriculture food technology

Master perl io_2011

  • 1. Read and Write Files with Perl Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 2. Resume • Scalars $ • Arrays @ • Hashes % • Foreach |-@ $ • Length … • Split $@ Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 3. Agenda • For • Conditions • Perl IO • Open a File • Write on Files • Read from Files • While loop Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 4. New cycle! for (my $i=0;$i<100;$i++){ print “$i n”; } Can we rewrite foreach using for? Hint: scalar @array is the array size Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 5. Conditions if (condition){ Do something } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 6. Conditions if ($time>5){ print “Time to go!n”; } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 7. Conditions if ($day == 27){ print “Wage!n”; } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 8. Conditions if ($day eq “Sunday”){ print “Alarm off!n”; } else{ print “snoozen”; } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 9. Perl IO (IO means Input/Output) Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 10. Why IO? Since now, Perl is #! /usr/bin/perl -w use strict; #<- ALWAYS!!! my $string=”All work and no play makes Jack a dull boyn"; for (my $i=1;$i<100;$i++){ print $string; } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 11. Why IO? But if we want to do the same with a user-submitted string? Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 12. Why IO? But if we want to do the same with a user-submitted string? IO can do this! Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 13. IO types Main Inputs • Keyboard • File • Errors Main outputs • Display • File Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 14. 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; } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 15. 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” Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 16. 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) Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 17. Open/Write a file Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 18. 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 Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 19. close When finished we have to close it: close OUT; If you dont, Santa will bring no gift. Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 20. 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 Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 21. Read from Files Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 22. 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; Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 23. Read with loops Problems: • It‟s long • File size unknown solution: Use loops Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 24. While loop Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 25. While while (condition){ do something… } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 26. While - for differences While For • Undetermined > Determined • No counter > Counter Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 27. While example Approx. solution of x^2-2=0 (Newton‟s method) my $sol=0.5; my $err=$sol**2-2; while ($err**2>.001){ $sol-=($sol**2-2)/(2*$sol); $err=$sol**2-2; print “X is $solnError=$errn”; } Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 28. 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; Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 29. Redirect outputs Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 30. 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); Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 31. @ARGV Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 32. 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 -1 ! Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 33. 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. Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 34. $_ • Perl default scalar value that is used when a variable is not explicitly specified. • Can be used in – For Loops – File Handling – Regular Expressions Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 35. $_ 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. Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 36. $_ 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 $_ Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 37. Opendir, readdir Bioinformatics master course, „11/‟12 Paolo Marcatili
  • 38. 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>"; Bioinformatics master course, „11/‟12 Paolo Marcatili