in reply to Geo::IPfree module

As Tutorials: Basic debugging checklist teaches, use B::Deparse to see how perl interprets your code

You're missing a semicolon here

Geo::IPfree $db = 'ipscountry.dat';

Next error is in my $geo = Geo::IPfree->new([$db]);

You're probably confused by the Optional Arguments Notation ( Backus–Naur Form )

 new( [$db] ) means that you can use  new(  ) or  new( $db )

The word-documentation for new explains this.