Если вы используете одну букву в качестве флага Getopt :: Std - это все, что вам нужно.
use Getopt::Std;
my %opt;
getopt("b",\%opt);
system "nmap -v -r $opt{b} >> file.txt" if exists $opt{b};
getopt принимает строку букв, используемых в качестве флагов и картих и их значения в хэш-таблицу.getopt ("ab",% opt) установит% opt в нечто вроде (a => "foo", b => "bar") при условии, что a и b фактически используются при вызове скрипта.