I agree with the posting about the table naming convention (these are in the DB, not on the OS).
I think your approach will work if you change $ladder_table_fields so that it has the datatypes (not just the field names), i.e.
my $ladder_table_fields = "player_name varchar2(30), id varchar2(9), position varchar2(30), ..."; # this would work in Oracle
$sth->execute( $@sql_parameters );
$sth->execute( $ladder_table, $ladder_table_fields, $ladder_table_fields1
I tested something like you had where you wanted to pass in the field names as a list (array), but I couldn't get $sth->execute to see it in a list context. Passing it as individual scalars worked. Of course you give up the reusability of $sql_command, but making it reusable might be more trouble than it's worth.
Hope this helps,