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) > fasta-01 (.c3)

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 )

[ use while/until and if/unless to draw attention to positive/negative conditions ]

lecture code viewer

downloads

Code
File I/O
File I/O
Martin Krzywinski
#!/usr/local/bin/perl $\ = "\n"; my $header; my %bp; open(FH,"/home/martink/work/ucsc/hg17/fasta/chr22.fa"); while($line = <FH>) { chomp $line; # skip the header next if $line =~ /^>/; # we're in the sequence for $bp (split("",$line)) { $bp{$bp}++; } } %bpstats = (); for $bp (keys %bp) { print qq/$bp $bp{$bp}/; if($bp =~ /[atcg]/) { $bpstats{repeat} += $bp{$bp}; } elsif ($bp =~ /n/i) { $bpstats{padding} += $bp{$bp}; } elsif ($bp =~ /[GC]/) { $bpstats{gc} += $bp{$bp}; } elsif ($bp =~ /[AT]/) { $bpstats{at} += $bp{$bp}; } else { $bpstats{unk} += $bp{$bp}; } } for $statistic (sort {$bpstats{$b} <=> $bpstats{$a}} keys %bpstats) { print qq($statistic $bpstats{$statistic}); }

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