in reply to creating thumbnails

You don't check the exit status, $?, after the system call. That would tell you what the error is - it's almost surely there since you say the perl program executes without complaint. Odds are that convert (part of ImageMagick) is not installed on the server, or not in your path. Here, it's at /usr/X11R6/bin/convert.

It is good practice to use the list form of system,

my $result = system '/path/to/convert', '-geometry', "${size}x${size}", '-quality', $qual, $file, "tn_${file}"; die $? if not defined $result;
The concatenation in your example may lack needed whitespace, which the list form takes care of.

Update: If you have a lot of images it would be worthwhile to write a makefile and put the thumbnails in a subdirectory. As written, your script will write thumbnails of thumbnails each time it is run, as well as redoing work it has already done.

After Compline,
Zaxo