in reply to Invoking API

Double quotes interpolate; single quotes do not.

sub say { print @_, "\n" }; my $foo = "Hello"; say "$foo World"; say '$foo World';
package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

Replies are listed 'Best First'.
Re^2: Invoking API
by mcoblentz (Scribe) on Jul 05, 2013 at 03:24 UTC
    Ah, thank you! I was putting double quotes around every variable, and not just the set.
Re^2: Invoking API
by mcoblentz (Scribe) on Jul 05, 2013 at 05:47 UTC

    So for this line,

    $image->Annotate( gravity =>'southeast', font =>'Arial', pointsize =>$fontsize, fill =>$color, x =>500, y =>$y, text =>$config_data[$i][0], " Information Last + Updated at: ", scalar localtime((stat($filename))[9]))";

    It's the text section that's driving me crazy. Normally the text is supplied with single quotes, which as you've explained is not interpolated. But having the line like this isn't working either:

    ... text =>"$config_data[$i][0] Information Last U +pdated at: scalar localtime((stat($filename))[9]))";

    Nor is any combination of double quotes, no quotes, or comma-separated values I can think of. I keep getting syntax errors. I'm sure this is simple but I just don't see it.

      scalar localtime((stat($filename))[9]) is not a variable (although its result varies, of course), so I guess variable interpolation doesn't help here.

      Here, I'd use the string concatenation operator, like this:

      text =>$config_data[$i][0] . " Information Last Updated at: " . lo +caltime((stat($filename))[9]) );

      My perl is a bit rusty (peak use was at the turn of the century), but AFAIR the scalar can be omitted here

        1. Turns out there were extra parentheses in the scalar/localtime routine, which were closing out the text field early. Just another case of a "short circuit between the headphones". 2. Thanks to the respondents, who encouraged me to "pretty-fy" the API call; that's what led me to the cause.