I think the issue is likely that the JSON module which Finance::Bitcoin uses (via the JSON RPC module) is treating your $btc as a string instead of a number. Passing $btc+0 may fix things.
use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name
Comment on Re: JSON / Bitcoind API 500 internal error