Acme-DotDotGone
view release on metacpan or search on metacpan
lib/Acme/DotDotGone.pm view on Meta::CPAN
package Acme::DotDotGone;
use 5.006;
use strict;
use warnings;
our $VERSION = '1.01';
our %dots;
BEGIN {
%dots = (
toDots => sub {
join ' ', map { $dots{$_}() } split '', unpack "b*", shift;
},
fromDots => sub {
pack "b*", join '', map { $dots{$_}() } split ' ', shift;
},
'.' => sub { 0 },
'..' => sub { 1 },
0 => sub { '.' },
1 => sub { '..' },
stderr => sub { print @_ }
);
close STDERR; # *\o/*
}
sub import {
open FH, "<$0";
my $reg = $_[1]
? qr/(.*)\1^\s*use\s+Acme::DotDotGone\s+($_[1]);\n/
: qr/.*^\s*use\s+Acme::DotDotGone;\n/;
($_[2] = (join '', <FH>)) =~ s/$reg//sm;
$_[2] = $1 . $_[2] if $1;
close FH;
($_[2], $_[3], $_[4]) = (($2)
? ($2 eq 'dot')
? sub {
$_[1] = $dots{toDots}($_[0]);
$_[0], $_[1], $_[1];
}
: sub {
$_[1] = $dots{fromDots}($_[0]);
$_[1], $_[0], $_[1];
}
: ($_[2] =~ m/[a-zA-Z]/)
? sub {
undef
}
: sub {
$_[1] = $dots{fromDots}($_[0]);
$_[1], $_[0];
}
)->($_[2]);
if ($_[4]) {
open FH, ">$0" or print "Cannot encode. '$0'\n" and exit;
print FH "use Acme::DotDotGone;\n";
print FH $_[4];
close FH;
}
do { eval "$_[2]"; $dots{stderr}($@); } if $_[2];
}
1;
__END__
=head1 NAME
Acme::DotDotGone - dot dot gone
( run in 1.492 second using v1.01-cache-2.11-cpan-ad19def0cd9 )