<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!perl -w
use strict;
use threads;
use Imager;

++$|;
Imager-&gt;preload;

# as a TIFF this file is large, build it from largeish.jpg if it
# doesn't exist
unless (-f "bench/largish.tif") {
  my $im = Imager-&gt;new(file =&gt; "bench/largish.jpg")
    or die "Cannot read bench/largish.jpg:", Imager-&gt;errstr;
  $im-&gt;write(file =&gt; "bench/largish.tif")
    or die "Cannot write bench.largish.tif:", $im-&gt;errstr;
}

my @tests =
  (
   [ "bench/largish.tif", "" ],
   [ "TIFF/testimg/grey16.tif", "" ],
   [ "TIFF/testimg/comp4bad.tif", "(Iolayer): Read error at scanline 120; got 0 bytes, expected 32" ],
  );

my @threads;
my $name = "A";
for my $test (@tests) {
  push @threads,
    threads-&gt;create
      (
       sub  {
	 my ($file, $result, $name) = @_;
	 for (1 .. 100000) {
	   print $name;
	   my $im = Imager-&gt;new(file =&gt; $file);
	   if ($result) {
	     $im and die "Expected error from $file, got image";
	     Imager-&gt;errstr eq $result
	       or die "Expected error '$result', got '",Imager-&gt;errstr, "'"
	   }
	   else {
	     $im or die "Expected image got error '", Imager-&gt;errstr, "'";
	   }
	 }
	 return;
       },
       @$test,
       $name
      );
  ++$name;
}

for my $t (@threads) {
  $t-&gt;join();
}
</pre></body></html>