You want to use the ARGV array for getting, say, the first argument:
my $file = $ARGV[0];
open (DBC, $file)|| die "cant open dbc $!";
@dbc = <DBC>;
close (DBC);
There are a lot of better ways to eventually do this sort of thing, like checking to make sure they passed something first:
if ($#ARGV == -1) {
die "You need to supply a file name to the command";
}
my $file = $ARGV[0];
open (DBC, $file)|| die "cant open dbc $!";
@dbc = <DBC>;
close (DBC);
And you can go on from there, eventually learning about the Getopt::Long and similar modules.