Я не уверен, что правильно понял вопрос.Но похоже, что код ниже решает вашу проблему:
$ cat extract.pl
#!/usr/bin/perl
use strict;
use warnings;
sub extract_name($)
{
my $s = shift;
if($s =~ /^-[dD]\s*\${(.*)_NAME}$/)
{
print "$1\n";
}
return;
}
extract_name('-d ${ranjana_wdgf_NAME}');
extract_name('-D${Tom_task_NAME}');
$ perl extract.pl
ranjana_wdgf
Tom_task
$