Perl: separando os argumentos de invocação das opções de invocação antes de usar o operador diamante

<> percorre o array @ARGV, então você pode mexer com @ARGV da maneira que quiser antes de processar arquivos com <>.
Por exemplo, este script elimina qualquer opção de invocação começando por ‘-‘ antes de processar os arquivos de entrada:

use List::Util qw(first);

foreach $arg (@ARGV) {
$_
= $arg;
if (/^-/)
{
print "$arg is an invocation optionn";
#Eliminate invocation options from @ARGV before we run the <> operator
splice
@ARGV, first { @ARGV[$_] eq $arg } 0..$#ARGV, -1;
}
}

while (<>) {
chomp
;
print "It was $_ that I sawn";
}