1) Eseguire la seguente operazione in binario : 1010011 + 1011100 = 10101111 eseguire la seguente operazione in ottale : 7555234 + 123561 = 7701015 eseguire la seguente operazione in esadecimale : AAAAAA + BBBBB = B66665 2) Scrivere un comando od uno script che mandi a studente un mail con l'elenco dei files della directory corrente che siano piu' grandi di 1024 bytes. #!bin/tcsh set messaggio = ( Files piu grandi di 1024 bytes : "\n" ) foreach file ( * ) # l'opzione -d e' necessaria per trattare le directories nel modo desiderato set var = `ls -ld $file` if( $var[5] > 1024 ) then set messaggio = ( $messaggio $var[9] "\n" ) endif end if( $#messaggio > 8 ) then echo $messaggio | mail studente endif exit 3) supponendo di avere un file ASCII di nome pippo , scrivere un comando che, a partire dalla directory corrente, trovi tutti i files che inizino con piovra ed appenda a ciascuno di essi, il contenuto del file di nome pippo . #!/bin/tcsh foreach file ( piovra* ) cat pippo >> $file end exit Esercizi di Perl 4) scrivere uno script in Perl che legga una stringa di caratteri ed un numero e stampi la stringa il numero di volte indicato dal numero su linee diverse. print "Inserisci stringa :\n"; $a = ; print "Inserisci il numero di volte :"; chomp($b=); for ($i=1 ; $i <= $b ; $i++) { print $a ; }; 5) Scrivere un programma che legga una serie di parole, una per riga, fino all'EOF, e quindi stampi un sommario di quante volte ciascuna parola e' stata inserita. Usare le hash. chomp(@words = ); foreach $word ( @words) { $numero{$word}++; }; foreach $word(keys %numero) { print "$word compare $numero{$word} volte.\n"; }; 6) Scrivere un programma come cat ma che inverta l'ordine delle linee dei file(s) specificati sulla command line. Nel caso che nessun file venga specificato, allora il programma deve considerare le linee date in standard input. La soluzione elegante e' quella che fa uso del 'diamond operator' <> , vale a dire : print reverse <> ; Una soluzione meno elegante e' : #!/usr/bin/perl if($#ARGV > -1 ) { foreach $file (@ARGV) { open(IN,"$file"); @contenuto=; print reverse @contenuto ; close(IN); }; } else { print reverse ; };