in reply to Re: system call to ImageMagick with many parameters fails
in thread system call to ImageMagick with many parameters fails

Jep, I simplified the script and added your list so it looks like:

#!/usr/bin/perl -w use Image::Magick; my $file="1251748705.jpg"; my $rfile="thumbnail.gif"; my $rrfile="thumbnail2.png"; my @cmd = ( "convert, $rfile qw[( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 ) +matte -compose Copy_Opacity -composite ], $rrfile" ); system("convert -size 500x180 $file -auto-orient -thumbnail 250x90 +-unsharp 0x.5 $rfile"); system(@cmd) == 0 or die "Couldn't launch [@cmd]: $!/$?";

The script tells me

convert,: not found thumbnail.gif: not found Syntax error: word unexpected (expecting ")") Couldn't launch [convert, thumbnail.gif qw[( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 ) +matte -compose Copy_Opacity -composite ], thumbnail2.png]: No such file or directory/512 at ./IMT +est33.pl line 26.

What did I miss??? Thanks

Replies are listed 'Best First'.
Re^3: system call to ImageMagick with many parameters fails
by Corion (Patriarch) on Sep 24, 2009 at 06:54 UTC

    You didn't miss much, but I missed a single quote at the start of my list.

    Change

    my @cmd = ( "convert, ... ], $rrfile" );

    to

    my @cmd = ( "convert", ... ], $rrfile );

    What you should put into @cmd is the list of arguments, and not a string containing that list.

      ... and now it tells me:

      syntax error at ./IMTest33.pl line 22, near "]" (Might be a runaway multi-line [] string starting on line 10) Execution of ./IMTest33.pl aborted due to compilation errors.

      Guess I need some commas somewhere or...?

        Here is your changed code with the syntax errors fixed:

        #!/usr/bin/perl -w #use Image::Magick; # you don't need that if you shell out to convert use strict; my $file="1251748705.jpg"; my $rfile="thumbnail.gif"; my $rrfile="thumbnail2.png"; my @cmd = ( "convert", # added the double quote here $rfile, qw[( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 ) +matte -compose Copy_Opacity -composite ], $rrfile ); # removed a double quote here #system("convert -size 500x180 $file -auto-orient -thumbnail 250x90 + -unsharp 0x.5 $rfile"); print "About to run [@cmd]\n"; system(@cmd) == 0 or die "Couldn't launch [@cmd]: $!/$?";

        This program compiles for me. As I don't have the convert executable, I can't tell you whether it does what it should.

        For further reading, you might want to read perlop about the "Quotes and Quote-like Operators".