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