The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Acme::AjiFry::Perl;

use warnings;
use strict;
use utf8;

use Acme::AjiFry::EN;
use Filter::Simple;

sub _extract_statements_avobe_declaration {
    open my $frh, '<', $0 or die "Can't open $0: $!";

    my $above_declaration_str;
    foreach my $line (<$frh>) {
        $above_declaration_str .= $line;
        last if ( $line =~ /^\s*use\s*Acme::AjiFry::Perl/ );
    }
    close $frh;

    return $above_declaration_str;
}

my $ajifry = Acme::AjiFry::EN->new();

FILTER_ONLY all => sub {
    s/(.+)/$ajifry->to_AjiFry($1)/eg;

    open my $fh, '+<', "$0" or die "Can't rewrite '$0'\n";
    seek $fh, 0, 0;

    print $fh &_extract_statements_avobe_declaration;
    print $fh $_;

    s/(.+)/$ajifry->to_English($1)/eg;

    close $fh;
};
1;

__END__

=encoding utf8

=head1 NAME

Acme::AjiFry::Perl - AjiFry Language Translator for Perl


=head1 SYNOPSIS

    use Acme::AjiFry::Perl;

    print 'hello';


=head1 DESCRIPTION

Acme::AjiFry::Perl is the AjiFry-Language translator for Perl program.
This module rewrites a program of using this module.


=head1 DEPENDENCIES

=over 4

=item * Acme::AjiFry::EN

=item * Filter::Simple (version 0.84 or later)

=back


=head1 SEE ALSO

L<Acme::AjiFry>.
L<Acme::AjiFry::EN>.


=head1 AUTHOR

moznion  C<< <moznion[at]gmail.com> >>


=head1 LICENCE AND COPYRIGHT

Copyright (c) 2012, moznion C<< <moznion[at]gmail.com> >>. All rights reserved.

This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.