Well , I guess it won't work. Substitute UTF-7 or encoding(UTF-7) for binmode and Encode::Unicode::UTF7 won't get loaded

There is one test of Encode::Encoding in http://cpansearch.perl.org/src/DANKOGAI/Encode-2.51/t/Encoder.t and it doesn't use binmode/layers, its encode/decode functions

Fudge always saves :) File::Slurp is hiding the critical warnings
you should use :encoding(rot13)

your start

package Encode::ROT13; use strict; use warnings; use parent qw( Encode::Encoding ); __PACKAGE__->Define( 'rot13' ); sub encode($$;$){ my( $obj, $str, $chk ) = @_; $str =~ tr/A-Za-z/N-ZA-Mn-za-m/; $_[1] = '' if $chk; # $_[1] is aliased through the call. Inplace edi +t. return $str; } no warnings 'once'; *Encode::ROT13::decode = \&encode; # Because rot13( rot13() ) is a rou +nd-trip. 1; package main; use strict; use warnings;

the fudge

use Data::Dump ; dd\%Encode::Encoding; for my $enc ( qw/ :rot13 :ROT13 :encoding(rot13) :encoding(ROT13) :UTF-7 :encoding(UTF-7) :via(ROT13) :via(Encode::ROT13) / ) { fudge( $enc ); } dd\%Encode::Encoding; our $tell; sub fudge { my( $layer ) = @_; $tell ||= tell DATA; seek DATA, $tell, 0; print "## binmode DATA, $layer \n"; binmode DATA, $layer; dd [<DATA>]; } __DATA__ Apple cat dog strawberry watermelon

output

$ perl fudge { "ascii" => bless(do{\(my $o = 1783919988)}, "Encode::XS"), "ascii-ctrl" => bless(do{\(my $o = 1783919960)}, "Encode::XS"), "iso-8859-1" => bless(do{\(my $o = 1783919932)}, "Encode::XS"), "null" => bless(do{\(my $o = 1783919904)}, "Encode::XS"), "rot13" => bless({ Name => "rot13" }, "Encode::ROT13"), "Unicode" => bless({ Name => "Internal" }, "Encode::Internal"), "utf-8-strict" => bless({ Name => "utf-8-strict", strict_utf8 => 1 } +, "Encode::utf8"), "utf8" => bless({ Name => "utf8" }, "Encode::utf8"), } ## binmode DATA, :rot13 Unknown PerlIO layer "rot13" at fudge line 51. ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] ## binmode DATA, :ROT13 Unknown PerlIO layer "ROT13" at fudge line 51, <DATA> line 5. ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] ## binmode DATA, :encoding(rot13) ["Nccyr\n", "png\n", "qbt\n", "fgenjoreel\n", "jngrezryba\n"] ## binmode DATA, :encoding(ROT13) ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] ## binmode DATA, :UTF-7 Unknown PerlIO layer "UTF" at fudge line 51, <DATA> line 20. ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] ## binmode DATA, :encoding(UTF-7) ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] ## binmode DATA, :via(ROT13) Cannot find package 'ROT13' at fudge line 51, <DATA> line 30. ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] ## binmode DATA, :via(Encode::ROT13) ["Apple\n", "cat\n", "dog\n", "strawberry\n", "watermelon\n"] { "ascii" => bless(do{\(my $o = 1783919988)}, "Encode::XS"), "ascii-ctrl" => bless(do{\(my $o = 1783919960)}, "Encode::XS"), "iso-8859-1" => bless(do{\(my $o = 1783919932)}, "Encode::XS"), "null" => bless(do{\(my $o = 1783919904)}, "Encode::XS"), "rot13" => bless({ Name => "rot13" }, "Encode::ROT13"), "UCS-2BE" => bless({ endian => "n", Name => "UCS-2BE", size => +2, ucs2 => 1 }, "Encode::Unicode"), "UCS-2LE" => bless({ endian => "v", Name => "UCS-2LE", size => +2, ucs2 => 1 }, "Encode::Unicode"), "Unicode" => bless({ Name => "Internal" }, "Encode::Internal"), "UTF-16" => bless({ endian => "", Name => "UTF-16", size => 2, + ucs2 => "" }, "Encode::Unicode"), "UTF-16BE" => bless({ endian => "n", Name => "UTF-16BE", size => + 2, ucs2 => "" }, "Encode::Unicode"), "UTF-16LE" => bless({ endian => "v", Name => "UTF-16LE", size => + 2, ucs2 => "" }, "Encode::Unicode"), "UTF-32" => bless({ endian => "", Name => "UTF-32", size => 4, + ucs2 => "" }, "Encode::Unicode"), "UTF-32BE" => bless({ endian => "N", Name => "UTF-32BE", size => + 4, ucs2 => "" }, "Encode::Unicode"), "UTF-32LE" => bless({ endian => "V", Name => "UTF-32LE", size => + 4, ucs2 => "" }, "Encode::Unicode"), "UTF-7" => bless({ Name => "UTF-7" }, "Encode::Unicode::UTF7" +), "utf-8-strict" => bless({ Name => "utf-8-strict", strict_utf8 => 1 } +, "Encode::utf8"), "utf8" => bless({ Name => "utf8" }, "Encode::utf8"), }

In reply to Re^2: Creating (and using) a custom encoding. (fudge :encoding(rot13)) by Anonymous Monk
in thread Creating (and using) a custom encoding. by davido

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.