use warnings;
use strict;
my $usage = <<"EOT";
usage:
perl $0 dna_datafile.name
EOT
die $usage unless @ARGV >= 1;
my $filename = $ARGV[0];
my $rx_dna = qr{ \b [ATCGatcg]+ \b }xms;
open my $filehandle, '<', $filename or die "opening '$filename': $!";
SEQ:
while (my $seq = <$filehandle>) {
next SEQ unless my ($dna) = $seq =~ m{ \A ($rx_dna) \s* \z }xms;
(my $revcom = reverse $dna) =~ tr/ACGTacgt/TGCAtgca/;
print "dna -> reverse complement \n";
print "'$dna' -> '$revcom' \n\n";
}
close $filehandle or die "closing '$filename': $!";
exit;
# define any subroutines here #########################################
####
ACTG
catgataaatttccc
not dna
tgac
####
c:\@Work\Perl\monks\undergradguy>perl rev_comp_2.pl dna.dat
dna -> reverse complement
'ACTG' -> 'CAGT'
dna -> reverse complement
'catgataaatttccc' -> 'gggaaatttatcatg'
dna -> reverse complement
'tgac' -> 'gtca'
####
# Unstrict.pm 22dec18waw
package Unstrict;
# use strict; # module will not compile with strictures enabled
$string = bareword;
sub func { return $string; }
1;
####
c:\@Work\Perl\monks\undergradguy>perl -Mstrict -le
"use Unstrict;
print Unstrict::func();
"
bareword
c:\@Work\Perl\monks\undergradguy>perl -Mstrict -le
"use Unstrict;
print Unstrict::func(), $x;
"
Global symbol "$x" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
c:\@Work\Perl\monks\undergradguy>perl -wMstrict -le
"use Unstrict;
print Unstrict::func();
"
Unquoted string "bareword" may clash with future reserved word at Unstrict.pm line 7.
bareword