#!/usr/bin/perl

# Una possibile soluzione all'Esercizio 2 (non l'unica)

use strict;
use warnings;

my $option = shift or die "Usage: $0 OPTION FILE [FILE_2]\n";
my $file = shift or die "Usage: $0 OPTION FILE [FILE_2]\n";

my $t_file = `file "$file" 2>&1`;
if ($t_file =~ /No such file or directory/ || $t_file =~ /directory/ ||
    $option ne "-w" && $option ne "-d" && $option ne "-s") {

    print "Parametro errato\n";

} else {

    if ($option eq "-w") {
        
        my $words = (split(/\s+/, `wc "$file"`))[2];
        print "Numero di parole: $words\n";

    } else {

        my $file_2 = shift or die "Usage: $0 OPTION FILE [FILE_2]\n";

        if ($option eq "-d") {

            my $t_file_2 = `file "$file_2" 2>&1`;
            if ($t_file_2 =~ /No such file or directory/ || $t_file_2 =~ /directory/) {

                print "Parametro errato\n";
                
            } else {
                
                print `diff "$file" "$file_2"`;

            }

        } elsif ($option eq "-s") {

            my $sorted = `sort "$file"`;

            open(my $fh, ">", $file_2) or die "Can't open > $file_2: $!";

            print $fh "$sorted";

            close $fh;

            # Nota che l'intero codice contenuto in questo "elsif" può essere sostituito da
            # `sort "$file" > "$file_2"`

        }

    }

}
