some functions ( like the lorcon_list_drivers ) works properly
I don't know much about Net::Lorcon2, but I'm guessing that the string that you assign to $driver must be the same as one of the strings listed by lorcon_list_drivers().
What happens if you assign those strings (as shown by Dumper(\@cards)) to $driver ?
Could you provide us with the output of Dumper(\@cards) from that second program I posted.