Perl - entrée de Ligne de Commande & STDIN

j'ai donc créé ce script ci-dessous pour une tâche, j'ai, on me demande un fichier texte et vérifie la fréquence des mots et des listes de 10 mots qui apparaissent la plupart du temps. Tout fonctionne bien mais j'ai besoin de ce script pour être en mesure de démarrer via la ligne de commande ainsi que via l'entrée standard.

Donc j'ai besoin d'être en mesure d'écrire 'perl wfreq.pl example.txt" et qui devrait lancer le script et de ne pas poser la question pour un fichier texte. Je ne suis pas sûr de la façon de le faire vraiment, je pense que j'aurai besoin d'une boucle while au début quelque part qui saute le STDIN si vous lui donnez le fichier texte dans le Terminal en ligne de commande.

Quelqu'un qui peut l'aider?

#! /usr/bin/perl

use utf8;
use warnings;

print "Please enter the name of the file: \n" ;
$file = <STDIN>;
chop $file;


open(my $DATA, "<:utf8", $file) or die "Oops!!: $!";
binmode STDOUT, ":utf8";

while(<$DATA>) {                          
    tr/A-Za-z//cs;
    s/[;:()".,!?]//gio;                   
    foreach $word (split(' ', lc $_)) {  
    $freq{$word}++;                  
    }
}
foreach $word (sort { $freq{$b} <=> $freq{$a} } keys %freq) {           
   @fr = (@fr, $freq{$word});
   @ord = (@ord, $word);        
}
for ($v =0; $v < 10; $v++){
print " $fr[$v] | $ord[$v]\n";
}

OriginalL'auteur FictionFighter | 2011-10-24