Commit | Line | Data |
fc8cd66c |
1 | package Cname; |
2 | our $Evil='A'; |
3 | |
4 | sub translator { |
5 | my $str = shift; |
6 | if ( $str eq 'EVIL' ) { |
ff3f963a |
7 | # Returns A first time, AB second, ABC third ... A-ZA the 27th time. |
fc8cd66c |
8 | (my $c=substr("A".$Evil,-1))++; |
9 | my $r=$Evil; |
10 | $Evil.=$c; |
11 | return $r; |
12 | } |
13 | if ( $str eq 'EMPTY-STR') { |
14 | return ""; |
15 | } |
ff3f963a |
16 | if ( $str eq 'NULL') { |
17 | return "\0"; |
18 | } |
19 | if ( $str eq 'LONG-STR') { |
20 | return 'A' x 255; |
21 | } |
22 | # Should exceed limit for regex \N bytes in a sequence. Anyway it will if |
23 | # UCHAR_MAX is 255. |
24 | if ( $str eq 'TOO-LONG-STR') { |
25 | return 'A' x 256; |
26 | } |
27 | if ($str eq 'MALFORMED') { |
28 | $str = "\xDF\xDFabc"; |
29 | utf8::upgrade($str); |
30 | |
31 | # Create a malformed in first and second characters. |
32 | $str =~ s/^\C/A/; |
33 | $str =~ s/^(\C\C)\C/$1A/; |
34 | } |
fc8cd66c |
35 | return $str; |
36 | } |
37 | |
38 | sub import { |
39 | shift; |
40 | $^H{charnames} = \&translator; |
41 | } |
42 | 1; |