#!/usr/bin/perl -w
use strict;
use SVG;

my $columns=4;
my $rows=4;
my $size=4;
# create an SVG object
my $svg= SVG->new(width=>(($columns*400+100)/$size),height=>(($rows*400+100)/$size));

my $ratio = 1/$size;

our $scale = $svg->group( transform => "scale($ratio)" );

sub box {
my ($random_value, $x, $y)= @_;
my $center = int(($random_value % 4))+1;
my $corner = int(($random_value % (52*4))/4)+1;
my $edge = int($random_value/(52*4))+1;
my $temp;
my $tile = $scale->group( transform => "translate($x,$y)" );
$tile->use('-href'=>"tiles.svg#t$center");
$temp = $tile->group();
$temp->use('-href'=>"tiles.svg#t$edge",transform=>"translate(0,-100)");
$temp->use('-href'=>"tiles.svg#t$corner",transform=>"translate(-100,-100)");
$temp = $tile->group(transform => 'rotate(90)' );
$temp->use('-href'=>"tiles.svg#t$edge",transform=>"translate(0,-100)");
$temp->use('-href'=>"tiles.svg#t$corner",transform=>"translate(-100,-100)");
$temp = $tile->group(transform => 'rotate(180)' );
$temp->use('-href'=>"tiles.svg#t$edge",transform=>"translate(0,-100)");
$temp->use('-href'=>"tiles.svg#t$corner",transform=>"translate(-100,-100)");
$temp = $tile->group(transform => 'rotate(270)' );
$temp->use('-href'=>"tiles.svg#t$edge",transform=>"translate(0,-100)");
$temp->use('-href'=>"tiles.svg#t$corner",transform=>"translate(-100,-100)");
}

my $x;
my $y;
my $random_value;
my %seen;

for ($x=0; $x<$columns; $x++) {
for ($y=0; $y<$rows; $y++) {
do {
   $random_value = int(rand(52*52*4));
} while (exists $seen{ $random_value });
$seen{$random_value} = "X";
box($random_value,$x*400+250,$y*400+250);
}
}

my $out = $svg->xmlify;
print $out;