q='''=; sleep 3; if( defined($x) ) { print (("Bash", "Python", "Ruby")[$x], "\n"); } else { print "Perl\n"; } __DATA__ '+%{ echo $q | sed -e 's/^[^;]*;/$x=0;/' | perl exit 0 ''' import subprocess child = subprocess.Popen("perl", stdin=subprocess.PIPE) child.stdin.write('$x=1;' + q[3:]) child.wait() '''}; IO.popen("perl", "w") {|io| io.write('$x=2;' + q[3..-1]); io.close_write } unused_data = %{ UNUSED DATA }#'''