in reply to WebService::Plotly dies with HTTP::Response=HASH(...)

The module is documented to do that:

All of the data calls return a response hash containing the keys url, message, warning, filename and error. Normally only url and filename will be interesting to you; however message can contain extra information and will be printed if verbose is set to 1, warning can contain warnings from the server and is always printed with warn(), while a value in the error key triggers the module to die.

So, maybe you want to wrap the calls that can fail within eval { ... } and inspect the value you get back from the call?

use Data::Dumper; my $response; my $ok= eval { $response= $plotly->plot( ... ); 1 }; if( ! $ok ) { warn "Plotly error:"; die Dumper $@; }; ...