This was my solution - I realise that I could just 'insist' that at least Text::CSV is installed and then avoid the need for evals altogether, but I'm working in multiple environments with different requirements, so this seemed the best 'will always work if possible even if only CSV_XS is installed' solution:
# work out which module to use
my $csv_module;
if(eval{require Text::CSV_XS}){
$csv_module = 'Text::CSV_XS';
}
else{
$csv_module = 'Text::CSV';
}
eval("use $csv_module;");
map{$a=1-$_/10;map{$d=$a;$e=$b=$_/20-2;map{($d,$e)=(2*$d*$e+$a,$e**2
-$d**2+$b);$c=$d**2+$e**2>4?$d=8:_}1..50;print$c}0..59;print$/}0..20
Tom Melly, pm (at) cursingmaggot (stop) co (stop) uk