Skip to content

Instantly share code, notes, and snippets.

@adokoy001
Last active April 2, 2017 08:12
Show Gist options
  • Save adokoy001/166bc82c33b0cabfc6b3f12fc1dee24f to your computer and use it in GitHub Desktop.
Save adokoy001/166bc82c33b0cabfc6b3f12fc1dee24f to your computer and use it in GitHub Desktop.
Quine like self-rewriting program in perl
eval($code=q{
# Quine like self-rewriting program
# 1st : $ perl quine.pl > a1.pl
# repeat : $ perl a1.pl > a2.pl ; cat a2.pl ; cp a2.pl a1.pl
$str="
XXXXXXXXXX
A
XXXXXXXXXX
";
@arr = split('XXXXXXXXXX',$code);
if($arr[1] =~ /\sA\s$/){$arr[1] = "\nAp\n"}
elsif($arr[1] =~ /\sAp\s$/){$arr[1] = "\nApr\n"}
elsif($arr[1] =~ /\sApr\s$/){$arr[1] = "\nApri\n"}
elsif($arr[1] =~ /\sApri\s$/){$arr[1] = "\nApril\n"}
elsif($arr[1] =~ /\sApril\s$/){$arr[1] = "\nApril_\n"}
elsif($arr[1] =~ /\sApril_\s$/){$arr[1] = "\nApril_F\n"}
elsif($arr[1] =~ /\sApril_F\s$/){$arr[1] = "\nApril_Fo\n"}
elsif($arr[1] =~ /\sApril_Fo\s$/){$arr[1] = "\nApril_Foo\n"}
elsif($arr[1] =~ /\sApril_Foo\s$/){$arr[1] = "\nApril_Fool\n"}
$code = join('XXXXXXXXXX',@arr);
print"eval(\$code=q{$code})\n"
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment