#!/usr/bin/perl -w use strict; print "Inserisci il nome del file da leggere :"; # definiamo il nome del file da leggere my $filename = ; # 'NM_021964fragment.pep' ; # elimino l'ultimo carattere (accapo) dalla riga letta chomp $filename; # controlliamo se il file esiste davvero if ( ! -e $filename ) { print "Il file $filename non esiste\n"; exit; } # apriamo il file per leggerne il contenuto if ( ! open( FILEDNA, $filename) ) { print "Non posso aprire il file $filename in lettura\n"; exit; } # modo alternativo di aprire il file e di mandare un messaggio di errore # se il file non può essere aperto # open( FILEDNA, $filename ) or die "Il file $filename non esiste"; # definisco una variabile che contiene il DNA my @DNA = ; # 'ACTGCTAGTCC' ; # chiudiamo il file (non ne abbiamo più bisogno) close( FILEDNA ); # la stampo print "DNA letto dal file:\n" , @DNA , "\n" ; # elimino l'ultimo carattere (accapo) da ciascuna riga chomp @DNA; # concateno le righe per costruire una sola my $DNA = join( '', @DNA ); print "DNA concatenato:\n", $DNA, "\n" ; my @basi = split // , $DNA; my %conteggio; # per ogni elemento della lista di basi # estraggo l'elemento dalla lista # cerco se la riga corrispondente esiste nella tabella # se esiste allora ne aumento il valore di 1 # altrimenti inserisco na nuova riga con valore 1 my $lettera; foreach $lettera ( @basi ) { if (exists $conteggio{ $lettera }) { $conteggio{ $lettera } += 1 ; } else { $conteggio{ $lettera } = 1 ; } } # per ogni nome di riga della tabella # stampo il nome della riga seguito dal valore della riga my $chiave; my $somma = 0; foreach $chiave (keys %conteggio) { $somma += $conteggio{ $chiave }; print $chiave, " = ", $conteggio{ $chiave }, "\n"; } print "Totale = $somma\n" ;