tr/[]<>.,+-//cd; s/(([+-])\2*)/P$2=@{[length$1]};/g; s/(([<>])\2*)/Q@{[('+','-')[$2eq'<']]}=@{[length$1]};/g; s/\./print chrP;/g; s/,/P=ord getc;/g; s/\[/while(P){/g; s/]/}/g; s/P/\$m[Q]/g; s/Q/\$p/g;