Kolakoski

Score: 74.16 (fail)

#!perl -l
substr($@.=$ARGV[$|--],-1)x=substr$@,$_,1for 0..$$;print substr$@,0,pop

Score: 75.17 (pass)

Without the $$ trick

#!perl -l
substr($@.=$ARGV[$|--],-1)x=substr$@,$_,1for 0..500;print substr$@,0,pop

Score: 75.21 (pass)

#!perl -l
$@.=($.=$ARGV[$_%2])x(substr$@,$_,1 or$.)for 0..500;print substr$@,0,pop

Score: 76.17 (fail)

By the way, using $$ in the for loop can create a randomly wrong output... :-)

#!perl -l
substr($@.=$ARGV[$|--],-1,1)x=substr$@,$_,1for 0..$$;print substr$@,0,pop

Score: 76.20 (pass)

#!perl -l
$@.=($.=$ARGV[$_%2])x(substr($@,$_,1)||$.)for 0..500;print substr$@,0,pop

Score: 77.18 (pass)

#!perl -l
($@.=$ARGV[$|--])=~s/.$/$&x substr$@,$_,1/efor 0..500;print substr$@,0,pop

Score: 77.21 (pass)

#!perl -l
eval'$_.=$ARGV[$|--];s/.$/$&x substr$_,$i++,1/e;'x500;print substr$_,0,pop

Score: 79.18 (pass)

#!perl -l
$@.=$ARGV[$|--],substr($@,-1,1)x=substr$@,$_,1for 0..$$;print substr$@,0,pop

Score: 79.23 (pass)

#!perl -l
$_.=$ARGV[$|--],s/.$/$&x substr$_,$i-1,1/ewhile$i++<500;print substr$_,0,pop

Score: 80.19 (pass)

#!perl -l
$@.=$ARGV[$|--],substr($@,-1,1)x=substr$@,$_,1for 0..500;print substr$@,0,pop

Score: 80.20 (pass)

#!perl -l
eval'($_.=$ARGV[$|--])=~s/.$/$&x substr$_,$i++,1/e;'x500;print substr$_,0,pop

Score: 80.22 (pass)

#!perl -l
$@.=$ARGV[$_%2]x(substr($@,$_,1)||$ARGV[$_%2])for 0..500;print substr$@,0,pop

Score: 81.20 (pass)

#!perl -l
$@.=$ARGV[$|--],substr($@,-1,1)x=substr$@,$_,1 for 0..500;print substr$@,0,pop

Score: 81.25 (pass)

#!perl -l
$a.=$ARGV[$|--],substr($a,-1,1)x=substr$a,$_,1 for 0..500;print substr$a,0,pop

Score: 83.22 (pass)

#!perl -l
do{$_.=$ARGV[$|--];s/.$/$&x substr$_,$i,1/e}while($i++<500);print substr$_,0,pop

Score: 84.24 (fail)

$j is a work-around for the case where $ARGV[0] is 1

#!perl
@a=@ARGV;$z.=$a[$|--]x(substr($z,$i++,1)||$a[$j++])for 1..250;print substr$z,0,$a[2]

Score: 84.24 (pass)

#!perl -l
$"="";@_=(@ARGV[0,1])x500;$_[$_]x=substr"@_",$_,1for 0..@_;print substr"@_",0,pop

Score: 85.22 (pass)

ah something original!

#!perl -l
for(0..500){$a.=$ARGV[$|--];substr($a,-1,1)x=substr($a,$_,1) }print substr$a,0,pop

Score: 85.25 (pass)

#!perl -l
$"="";@a=(@ARGV[0,1])x500;$a[$_]x=substr"@a",$_,1 for 0..@a;print substr"@a",0,pop

Score: 86.26 (pass)

#!perl -l
$"=$_;@a=(@ARGV[0,1])x500;$a[$_]x=substr("@a",$_,1)for 0..@a;print substr"@a",0,pop

Score: 87.21 (pass)

Shortening the unorthodox...

#!perl -l
$,=pop;$a=\substr$_="@ARGV "x$,,0,$,;s/(.) /$+x substr$_,$i++,1/ewhile$i<$,;print$$a

Score: 87.25 (pass)

#!perl -l
@a=@ARGV;$z.=$a[$|--]x(substr($z,$i++,1)||$a[$j++])for 1..250;print substr$z,0,$a[2]

Score: 88.23 (pass)

#!perl -l
@a=@ARGV;eval'$z.=$a[$|--]x(substr($z,$i++,1)||$a[$j++]);'x250;print substr$z,0,$a[2]

Score: 88.25 (pass)

Shortening the unorthodox...

#!perl -l
$c=pop;$a=\substr$_="@ARGV "x$c,0,$c;eval's/(.) /$+x substr$_,$i++,1/e;'x500;print$$a

Score: 91.18 (pass)

I was bored of using substr at the end. Notice how $@ shrinks and grows, and the final print is still OK.

#!perl -l
$_=\substr$@=1x pop,0;$@="";substr($@.=$ARGV[$|--],-1)x=substr$@,$_,1for$"..500;print$$_

Score: 91.23 (pass)

First working try...

#!perl
@a=@ARGV;$z.=($a[$|--])x(substr($z,$i++,1)||$a[$j++])for 1..250;print substr($z,0,$a[2]),$/

Score: 99.26 (pass)

#!perl -l
$c=pop;@a=($ARGV[0])x$ARGV[0];push@a,($ARGV[--$|])x($a[$_]||$ARGV[1])for 1..500;print@a[0..$c-1]

Score: 100.25 (fail)

trying another approach

#!perl
@a=(($ARGV[0])x$ARGV[0],$ARGV[1]);splice@a,@a-1,0,($ARGV[--$|])x$a[$_]for 1..500;print@a[0..(pop)-1]

Score: 100.25 (fail)

Ok, I am submitting most of my tests... :-)

#!perl -l
$a=((shift).shift)x200;for(0..200){substr($a,$j,1)x=$c=substr$a,$_,1;$j+=$c};print substr$a,0,pop

Score: 103.26 (pass)

trying another approach (fixed)

#!perl -l
@a=(($ARGV[0])x$ARGV[0],$ARGV[1]);splice@a,@a-1,0,($ARGV[--$|])x$a[$_]for 1..500;print@a[0..(pop)-1]

Score: 104.26 (fail)

#!perl -l
$b=pop;$a=((shift).pop)x200;for(0..200){substr($a,$j,1)x=$c=substr$a,$_,1;$j+=$c};print substr$a,0,$b