in reply to match names

You're on the right track. How about this?
chdir("c:/tdt/src") || die "trying"; # Or whatever works foreach my $tdt (<*.tdt>) { system("$BASEDIR/nbsstools/tdtgen/bin/tdtgen", $tdt); }
This uses the glob feature. By the way, make sure your chdir call succeeds.

As a note, your test /\.tdt/ is equivalent to *.tdt* which means that foo.tdt.txt will also match.