Created
October 23, 2012 14:28
-
-
Save pdl/3939054 to your computer and use it in GitHub Desktop.
Convert perl scripts to python with the awesome power of regular expressions.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!perl -w | |
=head1 NAME | |
pl2py.pl | |
=head1 DESCRIPTION | |
Attempts to convert perl scripts to python with the awesome power of regular expressions. | |
=head1 BUGS | |
This will (probably) not actually produce runnable python files. But it saves a lot of work converting some perl to python. | |
More useful if your perl code is well-indented to start with (consider using a source formatter first). | |
=head1 AUTHOR | |
Daniel Perrett C<< [email protected] >> | |
=cut | |
my $state; | |
while (my $sLine = <>) | |
{ | |
$sLine =~ tr/$//d; | |
$sLine =~ s/(?!<\d)\.(?!\d)/+/g; | |
$sLine =~ s/::/./g; | |
if ($state->{'pod'}) | |
{ | |
$sLine =~ s/^=(?!cut)//g; | |
} | |
elsif ($sLine =~ s/^=(?!cut)/"""/) | |
{ | |
$state->{'pod'} = 1; | |
} | |
if ($sLine =~ s/^=cut/"""/) | |
{ | |
$state->{'pod'} = 0; | |
} | |
$sLine =~ s/^\s*package (.*?);/class $1:/g; | |
$sLine =~ s/^\s*use /import /g; | |
$sLine =~ s/^\bundef\b/None/g; | |
$sLine =~ s/^\beq\b/==/g; | |
$sLine =~ s/^\bge\b/>=/g; | |
$sLine =~ s/^\ble\b/=</g; | |
$sLine =~ s/^\bne\b/!=/g; | |
$sLine =~ s/^\bgt\b/>/g; | |
$sLine =~ s/^\blt\b/</g; | |
$sLine =~ s/^\|\|/or/g; | |
$sLine =~ s/^&&/and/g; | |
$sLine =~ s/\s+{(['"])(.*)\1}/.$2/g; | |
#$sLine =~ s/^\s*sub\s*([\w]+)\s*(?:\(([^)]+)\))\s*\{?/def $1 ($2):/g; | |
$sLine =~ s/\bsub ([\w]+)(?:\(([^)]+)\))?\s*\{?/def $1:/g; | |
$sLine =~ s/\bmy ([\w]+)\s*=/$1 =/g; | |
$sLine =~ s/\bmy ([\w]+);//g; | |
$sLine =~ s/!/ not /g; | |
$sLine =~ s/->\{/./g; | |
$sLine =~ s/->\[/./g; | |
$sLine =~ s/->/./g; | |
$sLine =~ s/\{$/:/g; | |
$sLine =~ s/\}//g; | |
$sLine =~ s/;$//g; | |
print STDOUT $sLine; | |
} |
This isn't in Python! :)
Brilliant! :)
It doesn't produce working code that I've seen, but it does something far more important; it makes it possible to decipher just wtf some random perl coder from aeons gone by was trying to do, so you can reproduce the end result. Which is what counts.
I read this and my nose started to bleed
why, why would you do this?
This comment was marked as a violation of GitHub Acceptable Use Policies
What if I tried to convert this script to python... woah.
http://boughtupcom.scriptmania.com/cgi/perl2python.pl
perl to python cheatsheet
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Daniel,
this script doesn't seem to handle @array variables, e.g.
Best regards,
Arne