The distinctive Perl camel is (c) O'Reilly
Perl Workshop Home Page
Home of the Bioinformatics Perl Workshop perl workshop > courses > introduction to perl (1.0.1.8) > File I/O (.5/8) > file-03 (.c7)

course 1.0.1.8

Level: beginner
1.0.1.8.5
while loop; file I/O; reading from files; writing to files; printf/sprintf

legend

course code

cat.course.level.sessions.session

e.g. 1.0.1.8

categories

0 | introduction and orientation

1 | perl fundamentals

2 | shell and prompt tools

3 | web development

4 | CPAN Modules

5 | Ruby

levels

level: all all ( 0 )

level: beginner beginner ( 1 )

level: intermediate intermediate ( 2 )

level: advanced advanced ( 3 )

[ Perl makes a perfect low-calorie meal or snack ]

lecture code viewer

downloads

Code
File I/O
File I/O
Martin Krzywinski
#!/usr/local/bin/perl $\ = "\n"; # keep count of each word in a hash %words = (); # keep number of words per line in an array @wordcount = (); open(FH,"sherlock.txt"); while($line = <FH>) { chomp $line; # split line at whitespace (i.e. into words) @words = split(/\W/,$line); # iterate through all words in the line $wordcount = 0; for $word (@words) { if($word =~ /\w/) { # increment count for this word $words{$word}++; $wordcount++; } } # add number of passed words in this line to the array push @wordcount, $wordcount; } $wordcount_total = 0; for $i (0..@wordcount-1) { $wordcount_total += $wordcount[$i]; print qq(line $i had $wordcount[$i] words); } print qq(saw ),scalar(@wordcount),qq( lines in file); print qq(saw $wordcount_total words in file); print qq(average words per line ),$wordcount_total/@wordcount; @words_common = sort { $words{$b} <=> $words{$a} } keys %words; @words_length = sort { length($b) <=> length($a) } keys %words; for $i (0..4) { print qq(common word $i $words_common[$i]); } for $i (0..4) { print qq(longest word $i $words_length[$i]); } close(FH);

5 | File I/O | 1.0.1.8.5

1.0.1.8.5.p1 | File I/O | Martin Krzywinski | ppt
1.0.1.8.5.c1 | bes-01 | Martin Krzywinski | code
1.0.1.8.5.c2 | data.txt | Martin Krzywinski | code
1.0.1.8.5.c3 | fasta-01 | Martin Krzywinski | code
1.0.1.8.5.c4 | fasta-02 | Martin Krzywinski | code
1.0.1.8.5.c5 | file-01 | Martin Krzywinski | code
1.0.1.8.5.c6 | file-02 | Martin Krzywinski | code
1.0.1.8.5.c7 | file-03 | Martin Krzywinski | code
1.0.1.8.5.c8 | file1.txt | Martin Krzywinski | code
1.0.1.8.5.c9 | file2.txt | Martin Krzywinski | code
1.0.1.8.5.c10 | printf-01 | Martin Krzywinski | code
1.0.1.8.5.c11 | randseq.fa | Martin Krzywinski | code
1.0.1.8.5.c12 | rx.txt | Martin Krzywinski | code
1.0.1.8.5.c13 | sherlock.txt | Martin Krzywinski | code
1.0.1.8.5.c14 | sprintf-01 | Martin Krzywinski | code
1.0.1.8.5.c15 | while-01 | Martin Krzywinski | code
1.0.1.8.5.a1 | File I/O | Martin Krzywinski | pdf
1.0.1.8.5.s1 | File I/O | Martin Krzywinski | slides