unicode character maps
CoC Character Generator Alpha 7
CoC is a character generator for Call of Cthulhu. more>>
A main goal for the comming 2.0 release will be an implementation of the Byakhee save file format, to let users of CoC CharGen and Byakhee to exchange character files.

Unicode Data Browser 1.5
UnicodeDataBrowser is a very useful browser designed for the UnicodeData.txt file which consists of much useful information but is not easily read by humans. more>>
UnicodeDataBrowser 1.5 is a very useful browser designed for the UnicodeData.txt file which consists of much useful information but is not easily read by humans. The browser creates a scrollable table in which columns represent properties.
The table may be sorted on any column. Abbreviations are expanded and characters cross-referenced in decomposition and casing fields are named. Regular expression search restricted to a selected column is available. The set of characters for which information is displayed may be restricted to those characters matching a regular expression on a specified property.
Each such filtering operation applies to the output of the previous filtering operation unless the table is reset to the original full set of characters, so filtering on multiple properties is possible.
Enhancements: Adds canonical decomposition info for Hangul syllables.
<<lessUnicode::Collate 0.52
Unicode::Collate is a Unicode Collation Algorithm. more>>
SYNOPSIS
use Unicode::Collate;
#construct
$Collator = Unicode::Collate->new(%tailoring);
#sort
@sorted = $Collator->sort(@not_sorted);
#compare
$result = $Collator->cmp($a, $b); # returns 1, 0, or -1.
# If %tailoring is false (i.e. empty),
# $Collator should do the default collation.
This module is an implementation of Unicode Technical Standard #10 (a.k.a. UTS #10) - Unicode Collation Algorithm (a.k.a. UCA).
Constructor and Tailoring
The new method returns a collator object.
$Collator = Unicode::Collate->new(
UCA_Version => $UCA_Version,
alternate => $alternate, # deprecated: use of variable is recommended.
backwards => $levelNumber, # or @levelNumbers
entry => $element,
hangul_terminator => $term_primary_weight,
ignoreName => qr/$ignoreName/,
ignoreChar => qr/$ignoreChar/,
katakana_before_hiragana => $bool,
level => $collationLevel,
normalization => $normalization_form,
overrideCJK => &overrideCJK,
overrideHangul => &overrideHangul,
preprocess => &preprocess,
rearrange => @charList,
table => $filename,
undefName => qr/$undefName/,
undefChar => qr/$undefChar/,
upper_before_lower => $bool,
variable => $variable,
);
Unicode::Map8 0.12
Unicode::Map8 is a mapping table between 8-bit chars and Unicode. more>>
SYNOPSIS
require Unicode::Map8;
my $no_map = Unicode::Map8->new("ISO646-NO") || die;
my $l1_map = Unicode::Map8->new("latin1") || die;
my $ustr = $no_map->to16("V}re norske tegn b|r {resn");
my $lstr = $l1_map->to8($ustr);
print $lstr;
print $no_map->tou("V}re norske tegn b|r {resn")->utf8
The Unicode::Map8 class implement efficient mapping tables between 8-bit character sets and 16 bit character sets like Unicode. The tables are efficient both in terms of space allocated and translation speed. The 16-bit strings is assumed to use network byte order.
The following methods are available:
$m = Unicode::Map8->new( [$charset] )
The object constructor creates new instances of the Unicode::Map8 class. I takes an optional argument that specify then name of a 8-bit character set to initialize mappings from. The argument can also be a the name of a mapping file. If the charset/file can not be located, then the constructor returns undef.
If you omit the argument, then an empty mapping table is constructed. You must then add mapping pairs to it using the addpair() method described below.
$m->addpair( $u8, $u16 );
Adds a new mapping pair to the mapping object. It takes two arguments. The first is the code value in the 8-bit character set and the second is the corresponding code value in the 16-bit character set. The same codes can be used multiple times (but using the same pair has no effect). The first definition for a code is the one that is used.
Consider the following example:
$m->addpair(0x20, 0x0020);
$m->addpair(0x20, 0x00A0);
$m->addpair(0xA0, 0x00A0);
It means that the character 0x20 and 0xA0 in the 8-bit charset maps to themselves in the 16-bit set, but in the 16-bit character set 0x0A0 maps to 0x20.
$m->default_to8( $u8 )
Set the code of the default character to use when mapping from 16-bit to 8-bit strings. If there is no mapping pair defined for a character then this default is substituted by to8() and recode8().
$m->default_to16( $u16 )
Set the code of the default character to use when mapping from 8-bit to 16-bit strings. If there is no mapping pair defined for a character then this default is used by to16(), tou() and recode8().
$m->nostrict;
All undefined mappings are replaced with the identity mapping. Undefined character are normally just removed (or replaced with the default if defined) when converting between character sets.
$m->to8( $ustr );
Converts a 16-bit character string to the corresponding string in the 8-bit character set.
$m->to16( $str );
Converts a 8-bit character string to the corresponding string in the 16-bit character set.
$m->tou( $str );
Same an to16() but return a Unicode::String object instead of a plain UCS2 string.
$m->recode8($m2, $str);
Map the string $str from one 8-bit character set ($m) to another one ($m2). Since we assume we know the mappings towards the common 16-bit encoding we can use this to convert between any of the 8-bit character sets.
$m->to_char16( $u8 )
Maps a single 8-bit character code to an 16-bit code. If the 8-bit character is unmapped then the constant NOCHAR is returned. The default is not used and the callback method is not invoked.
$m->to_char8( $u16 )
Maps a single 16-bit character code to an 8-bit code. If the 16-bit character is unmapped then the constant NOCHAR is returned. The default is not used and the callback method is not invoked.
The following callback methods are available. You can override these methods by creating a subclass of Unicode::Map8.
$m->unmapped_to8
When mapping to 8-bit character string and there is no mapping defined (and no default either), then this method is called as the last resort. It is called with a single integer argument which is the code of the unmapped 16-bit character. It is expected to return a string that will be incorporated in the 8-bit string. The default version of this method always returns an empty string.
Example:
package MyMapper;
@ISA=qw(Unicode::Map8);
sub unmapped_to8
{
my($self, $code) = @_;
require Unicode::CharName;
"";
}
$m->unmapped_to16
Likewise when mapping to 16-bit character string and no mapping is defined then this method is called. It should return a 16-bit string with the bytes in network byte order. The default version of this method always returns an empty string.
Unicode Utilities 2.25
Unicode Utilities project are a set of programs for manipulating and analyzing Unicode text. more>>
unidesc reports the character ranges to which different portions of the text belong. unihist generates a histogram of the characters in its input. ExplicateUTF8 is intended for debugging or for learning about Unicode. It determines and explains the validity of a sequence of bytes as a UTF-8 encoding. unirev reverses UTF-8 strings.
Enhancements:
- Adds to unidesc the option -r which causes it to list the ranges detected after reading all input rather than listing them as they are encountered, and adds to uniname the option -B which causes it to ignore characters within the Basic Multilingual Plane.
SWF::Builder::Character::Sound 0.15
SWF::Builder::Character::Sound is a SWF Sound character. more>>
SYNOPSIS
my $sound = $mc->new_sound( ring.mp3 );
$sound->play;
This module creates SWF sound characters from MP3 or raw Microsoft WAV files.
$sound = $mc->new_sound( $filename )
loads a sound file and returns a new sound character. It supports only MP3 now.
$sound->play( [ %options ] )
plays the sound.
Options:
MovieClip => $mc, Frame => $frame
MovieClip(MC) is a parent movie clip on which the sound is played. If MC is not set, the sound is played on the movie clip in which it is defined. Frame is the frame number on which the sound is played.
Multiple => 0/1
avoids/allows multiple playing. If 0, dont start the sound if already playing.
Loop => $count
sets the loop count.
In => $in_msec, Out => $out_msec
In sets the beginning point of the sound and Out sets the last in milliseconds.
Envelope => [ $msec1, $volumelevel1, $msec2, $volumelevel2, ... ]
sets the sound envelope. Volume level is set to $volumelevel1 at $msec1, and $volumelevel2 at $msec2, ... Volume level can take a number from 0 to 32768, or a reference to the array of volume levels of left and right channels.
$sound->stop( [ MovieClip => $mc, Frame => $frame ] )
stops playing the sound. It can take MovieClip and Frame options as same as the play method.
$sound->start_streaming( [ MovieClip => $mc, Frame => $frame ] )
starts the streaming sound, which synchronizes with the movie timeline. It can take MovieClip and Frame options as same as the play method.
$sound->Latency( $msec )
sets the sound latency in milliseconds.
Convert::CharMap 0.01
Convert::CharMap is a Perl module that can conversion between Unicode Character Maps. more>>
SYNOPSIS
use Convert::CharMap;
my $map = Convert::CharMap->load(CharMapML => test.xml);
$map->save(UCM => test.ucm);
This module transforms between unicode character map formats, using an in-memory representation of CharMapML as the intermediate format.
Currently is supports the CharMapML, YAML and UCM (write-only) backends; ENC, Iconv and other maps are also planned.
Unicode::Unihan 0.03
Unicode::Unihan is the Unihan Data Base 5.0.0. more>>
SYNOPSIS
use Unicode::Unihan;
my $db = new Unicode::Unihan;
print join("," => $db->Mandarin("x{5c0f}x{98fc}x{5f3e}"), "n";
ABSTRACT
This module provides a user-friendly interface to the Unicode Unihan Database 3.2. With this module, the Unihan database is as easy as shown in the SYNOPSIS above.
The first thing you do is make the database available. Just say
use Unicode::Unihan;
my $db = new Unicode::Unihan;
Thats all you have to say. After that, you can access the database via $db->tag($string) where tag is the tag in the Unihan Database, without k prefix.
$data = $db->tag($string) =item @data = $db->tag($string)
The first form (scalar context) returns the Unihan Database entry of the first character in $string. The second form (array context) checks the entry for each character in $string.
@data = $db->Mandarin("x{5c0f}x{98fc}x{5f3e}");
# @data is now (SHAO4 XIAO3,SI4,DAN4)
@data = $db->JapaneseKun("x{5c0f}x{98fc}x{5f3e}");
# @data is now (CHIISAI KO O,KAU YASHINAU,TAMA HAZUMU HIKU)
Unicode::Escape 0.0.2
Unicode::Escape is a Perl module with escape and unescape Unicode characters other than ASCII. more>>
SYNOPSIS
# Escape Unicode charactors like u3042u3043u3044.
# JSON thinks No more Garble!!
# case 1
use Unicode::Escape;
my $escaped1 = Unicode::Escape::escape($str1, euc-jp); # $str1 contains charactor that is not ASCII. $str1 is encoded by euc-jp.
my $escaped2 = Unicode::Escape::escape($str2); # default is utf8 # $str2 contains charactor that is not ASCII.
my $unescaped1 = Unicode::Escape::unescape($str3, shiftjis); # $str3 contains escaped Unicode character. return value is encoded by shiftjis.
my $unescaped2 = Unicode::Escape::unescape($str4); # default is utf8 # $str4 contains escaped Unicode character.
# case 2
use Unicode::Escape qw(escape unescape);
my $escaped1 = escape($str1, euc-jp); # $str1 contains charactor that is not ASCII. $str1 is encoded by euc-jp.
my $escaped2 = escape($str2); # default is utf8 # $str2 contains charactor that is not ASCII.
my $unescaped1 = unescape($str3, shiftjis); # $str3 contains escaped Unicode character. return value is encoded by shiftjis.
my $unescaped2 = unescape($str4); # default is utf8 # $str4 contains escaped Unicode character.
# case 3
use Unicode::Escape;
my $escaper = Unicode::Escape->new($str, shiftjis); # $str contains charactor that is not ASCII. $str is encoded by shiftjis.(default is utf8)
my $escaped = $escaper->escape;
# case 4
use Unicode::Escape;
my $escaper = Unicode::Escape->new($str); # $str contains escaped Unicode character.
my $unescaped1 = $escaper->unescape(shiftjis);
my $unescaped2 = $escaper->unescape; # default is utf8.
Escape and unescape Unicode characters other than ASCII. When the server response is javascript code, it is convenient.
Unicode::MapUTF8 1.11
Unicode::MapUTF8 is a Perl module with conversions to and from arbitrary character sets and UTF8. more>>
SYNOPSIS
use Unicode::MapUTF8 qw(to_utf8 from_utf8 utf8_supported_charset);
# Convert a string in ISO-8859-1 to UTF8
my $output = to_utf8({ -string => An example, -charset => ISO-8859-1 });
# Convert a string in UTF8 encoding to encoding ISO-8859-1
my $other = from_utf8({ -string => Other text, -charset => ISO-8859-1 });
# List available character set encodings
my @character_sets = utf8_supported_charset;
# Add a character set alias
utf8_charset_alias({ ms-japanese => sjis });
# Convert between two arbitrary (but largely compatible) charset encodings
# (SJIS to EUC-JP)
my $utf8_string = to_utf8({ -string =>$sjis_string, -charset => sjis});
my $euc_jp_string = from_utf8({ -string => $utf8_string, -charset => euc-jp })
# Verify that a specific character set is supported
if (utf8_supported_charset(ISO-8859-1) {
# Yes
}
Provides an adapter layer between core routines for converting to and from UTF8 and other encodings. In essence, a way to give multiple existing Unicode modules a single common interface so you dont have to know the underlaying implementations to do simple UTF8 to-from other character set encoding conversions. As such, it wraps the Unicode::String, Unicode::Map8, Unicode::Map and Jcode modules in a standardized and simple API.
This also provides general character set conversion operation based on UTF8 - it is possible to convert between any two compatible and supported character sets via a simple two step chaining of conversions.
As with most things Perlish - if you give it a few big chunks of text to chew on instead of lots of small ones it will handle many more characters per second.
By design, it can be easily extended to encompass any new charset encoding conversion modules that arrive on the scene.
This module is intended to provide good Unicode support to versions of Perl prior to 5.8. If you are using Perl 5.8.0 or later, you probably want to be using the Encode module instead. This module does work with Perl 5.8, but Encode is the preferred method in that environment.
SWF::Builder::Character::EditText 0.16
SWF::Builder::Character::EditText is a SWF dynamic editable text object. more>>
SYNOPSIS
my $text = $mc->new_dynamic_text( $font )
->size(10)
->color(000000)
->text(This is a text.);
my $text_i = $text->place;
my $field = $mc->new_input_field;
$field->place;
^This module creates dynamic editable text objects, which can be changed at playing time.
Basic dynamic editable text object
$etext = $mc->new_edit_text( [$font, $text] )
returns a new basic dynamic editable text object. It has interfaces to raw DefineEditText tag. $font is an SWF::Builder::Font object.
$etext->font( $font )
applies the font to the text. $font is an SWF::Builder::Font object. Unlike static text, the font is applied to the whole text. If the text will be changed in the playing time, you should add glyph data of all characters which will be used to the font by $font->add_glyph or turn off the embed flag of the font.
$etext->size( $size )
sets a font size to $size in pixel. Unlike static text, the font size of the whole text is changed.
$etext->color( $color )
sets color of the text. The color can take a six or eight-figure hexadecimal string, an array reference of R, G, B, and optional alpha value, an array reference of named parameters such as [Red => 255], and SWF::Element::RGB/RGBA object. Unlike static text, the color is applied to the whole text.
$etext->text( $string )
writes the $string.
$etext->leading( $leading )
sets the vertical distance between the lines in pixel.
$etext->box_size( $width, $height )
sets the bounding box of the text and stops auto-sizing the box. When either $width or $height is undef, it is unchanged. Fixing bounding box may cause unexpected text clipping. You should set DefineEditText flag Multiline and/or WordWrap. See SWF::Element.
$etext->draw_border
draws the border.
$etext->align( left / right / center / justify )
sets the text alignment.
$etext->methos for SWF::Element::Tag::DefineEditText
You can control details of the texts to call methods for DefineEditText tag. See SWF::Element.
Preset dynamic text object
The following objects are inheritants of the basic dynamic editable text. These are preset some proper flags of DefineEditText tag.
$dtext = $mc->new_dynamic_text( [$font, $text] )
returns a new dynamic text. It is read-only, multiline text enabled, and auto-sized its bounding box.
$htmltext = $mc->new_html_text( [$html] )
returns a new HTML text. It is read-only, multiline text enabled, and auto-sized its bounding box. The text is treated as a subset of HTML. Supported tags are < a >, < b >, < br >, < font >, < i >, < img >, < li >, < p >, < span >, < u >, and two special tags, < tab > and < textformat >. See Macromedia Flash File Format Specification and ActionScript Reference Guide for further information.
$htmltext->use_font( $font, ... )
tells $htmltext what fonts are used in the HTML. In general, upright, italic, bold, and bold italic font are in the different TrueType font files. You should prepare 2-4 fonts if you use < b > and < i > tags, like this:
my $fp = $ENV{SYSTEMROOT}./fonts; # for Windows.
my $font = $m->new_font("$fp/arial.ttf");
$font->add_glyph(a, z);
my $fonti = $m->new_font("$fp/ariali.ttf");
$fonti->add_glyph(a, z);
my $ht = $m->new_html_text;
$ht->text(test < i >string< /i >< /font >);
$ht->use_font($font, $fonti);
$mc->new_text_area( $width, $height )
returns a new editable text area. It takes area width and height in pixel.
$mc->new_input_field( [$length] )
returns a new one-line input field. $length is a max length of input string.
$mc->new_password_field( [$length] )
returns a new one-line password field. $length is a max length of input string.
Encode::HanExtra 0.10
Encode::HanExtra Perl module contains extra sets of Chinese encodings. more>>
SYNOPSIS
use Encode;
# Traditional Chinese
$euc_tw = encode("euc-tw", $utf8); # loads Encode::HanExtra implicitly
$utf8 = decode("euc-tw", $euc_tw); # ditto
# Simplified Chinese
$gb18030 = encode("gb18030", $utf8); # loads Encode::HanExtra implicitly
$utf8 = decode("gb18030", $gb18030); # ditto
Perl 5.7.3 and later ships with an adequate set of Chinese encodings, including the commonly used CP950, CP936 (also known as GBK), Big5 (alias for Big5-Eten), Big5-HKSCS, EUC-CN, HZ, and ISO-IR-165.
However, the numbers of Chinese encodings are staggering, and a complete coverage will easily increase the size of perl distribution by several megabytes; hence, this CPAN module tries to provide the rest of them.
If you are using perl 5.8 or later, Encode::CN and Encode::TW will automatically load the extra encodings for you, so theres no need to explicitly write use Encode::HanExtra if you are using one of them already.
ENCODINGS
This version includes the following encoding tables:
Canonical Alias Description
-----------------------------------------------------------------------------
big5-1984 /b(tca-)?big5-?(19)?84$/i TCAs original Big5-1984
big5ext /b(cmex-)?big5-?e(xt)?$/i CMEXs Big5e Extension
big5plus /b(cmex-)?big5-?p(lus)?$/i CMEXs Big5+ Extension
/b(cmex-)?big5+$/i
cccii /b(ccag-)?cccii$/i Chinese Character Code for
Information Interchange
cns11643-1 /bCNS[-_ ]?11643[-_]1$/i Taiwans CNS map, plane 1
cns11643-2 /bCNS[-_ ]?11643[-_]2$/i Taiwans CNS map, plane 2
cns11643-3 /bCNS[-_ ]?11643[-_]3$/i Taiwans CNS map, plane 3
cns11643-4 /bCNS[-_ ]?11643[-_]4$/i Taiwans CNS map, plane 4
cns11643-5 /bCNS[-_ ]?11643[-_]5$/i Taiwans CNS map, plane 5
cns11643-6 /bCNS[-_ ]?11643[-_]6$/i Taiwans CNS map, plane 6
cns11643-7 /bCNS[-_ ]?11643[-_]7$/i Taiwans CNS map, plane 7
cns11643-f /bCNS[-_ ]?11643[-_]f$/i Taiwans CNS map, plane F
euc-tw /beuc.*tw$/i EUC (Extended Unix Character)
/btw.*euc$/i
gb18030 /bGB[-_ ]?18030$/i GBK with Traditional Characters
unisys /bunisys$/i Unisys Traditional Chinese
unisys-sosi1 Unisys SOSI1 transport encoding
unisys-sosi2 Unisys SOSI2 transport encoding
Detailed descriptions are as follows:
BIG5-1984
This is the original Big5 encoding made by TCA Taiwan.
BIG5PLUS
This encoding, while not heavily used, is an attempt to bring all Taiwans conflicting internal-use encodings together, and fit it as an extension to the widely-deployed Big5 range, by CMEX Taiwan.
BIG5EXT
The CMEXs second (and less ambitious) try at unifying the most commonly used characters not covered by Big5, while not polluting out of the 94x94 arragement like BIG5PLUS did.
CCCII
The earliest (and most sophisticated) Traditional Chinese encoding, with a three-byte raw character map, made in 1980 by the Chinese Character Analysis Group (CCAG), used mostly in library systems.
EUC-TW
The EUC transport version of CNS11643 (planes 1-7), the comprehensive character set used by the Taiwan government.
CNS11643-*
The raw character map extracted from the Unihan database, including the plane F which wasnt included in EUC-TW.
GB18030
An extension to GBK, this encoding lists most Han characters (both simplified and traditional), as well as some other encodings used by other peoples in China.
UNISYS
Unisys Systems internal Chinese mapping.
Unicode Error Detector 1.0
Unicode Error Detector is a product for Plone used to pinpoint errors in your application leading to UnicodeDecodeErrors. more>>
Do not use this product unless you are actively debugging a Unicode Error. Never use this product in production sites.
UnicodeDecodeErrors typically occur when you try to add a Unicode string to a non-ascii string. This product patches StringIO used by page templates to check if the appended string is a Unicode string, and if it is, it replaces the string with an error marker.
As there is some overhead associated with inspecting the strings instead of just appending to the output, this product is meant for debugging purposes only.
Usage
Put the product in your Products directory and restart Zope. Load the template causing the UnicodeDecodeError, and this tool will indicate the location by printing THIS IS WHERE THE ERROR IS in the rendered template.
You can then inspect the template and/or code more closely to figure out where the decode error happens.
ustring C++ Unicode library 0.5
ustring is a C++ library to implement the complete Unicode 3.0 standard. more>>
ustring C++ Unicode library provides a wide string class which fits with STL, implementing a full Unicode normalizer, uppercase and lowercase transformation, and diacritical mark removal. A Unicode level-1 regular expression class is also provided.
Unicode::Overload 0.01
Unicode::Overload is a Perl source filter to implement Unicode operations. more>>
SYNOPSIS
use charnames :full;
use Unicode::Overload (
"N{UNION}" => infix =>
sub { my %a = map{$_=>1}@{$_[0]};
my %b = map{$_=>1}@{$_[1]};
return keys(%a,$b); },
"N{SUPERSCRIPT TWO}" => postfix => sub { $_[0] ** 2 },
"N{NOT SIGN}" => prefix => sub { !$_[0] },
[ "N{LEFT FLOOR}", "N{RIGHT FLOOR}" ] => outfix =>
sub { POSIX::floor($_[0]) },
);
@union = (@a N{UNION @b); # Parentheses REQUIRED
die "Pythagoras was WRONG!" # Same here
unless sqrt((3)N{SUPERSCRIPT TWO} + (4)N{SUPERSCRIPT TWO}) == 5;
$b = N{NOT SIGN}($b); # Required here too
die "Fell through floor" # Balanced characters form their own parentheses
unless N{LEFT FLOOR}-3.2N{RIGHT FLOOR} == 4;
Allows you to declare your own Unicode operators and have them behave as prefix (like sigma or integral), postfix (like superscripted 2), infix (like union), or outfix (like the floor operator, with the L-like and J-like brackets).
To keep this document friendly to people without UTF-8 terminals, the N{} syntax for Unicode characters will be used throughout, but please note that the N{} characters can be replaced with the actual UTF-8 characters anywhere.
Also, please note that since Perl 5 doesnt support the notion of arbitrary operators, this module cheats and uses source filters to do its job. As such, all "operators" must have their arguments enclosed in parentheses. This limitation will be lifted when a better way to do this is found.
Also, note that since these arent "real" operators there is no way (at the moment) to specify precedence. All Unicode "operators" have the precedence (such as it is) of function calls, as they all get transformed into function calls inline before interpreting.
In addition, due to a weird unicode-related bug, only one character per operator is currently permitted. Despite behaving correctly elsewhere, substr() thinks that one character equals one byte inside Unicode::Overload .
Anyway, this module defines four basic types of operators. Prefix and infix should be familiar to most users of perl, as prefix operators are basically function calls without the parens. Infix operators are of course the familiar + etcetera.
The best analogy for postfix operators is probably the algebraic notation for squares. $a**2 is perls notation, ($a)N{SUPERSCRIPT TWO} is the Unicode::Overload equivalent, looking much closer to a mathematical expression, with the 2 in its proper position.
Outfix is the last operator, and a little odd. Outfix can best be thought of as user-definable brackets. One of the more common uses for this notation again comes from mathematics in the guise of the floor operator. Looking like brackets with the top bar missing, they return effectively POSIX::floor() of their contents.
Since outfix operators define their own brackets, extra parentheses are not needed on this type of operator.
A quick summary follows:
prefix
Operator goes directly before the parentheses containing its operands. Whitespace is allowed between the operator and opening parenthesis. This acts like a function call.
Sample: N{NOT SIGN}($b)
postfix
Operator goes directly after the parentheses containing its operands. Whitespace is allowed between the closing parenthesis and operator. This doesnt have a good Perl equivalent, but there are many equivalents in algebra, probably the most common being:
Sample: ($a+$b)N{SUPERSCRIPT TWO}
infix
Operator goes somewhere inside the parentheses. Whitespace is allowed between either parenthesis and the operator.
Sample: ($a N{ELEMENT OF} @list)
outfix
Operators surround their arguments and are translated into parentheses. As such, whitespace is allowed anywhere inside the operator pairs. There is no requirement that the operators be visually symmetrical, although it helps.
Sampe: $c=N{LEFT FLOOR}$a_+$bN{RIGHT FLOOR}
The requirements for parentheses will be removed as soon as I can figure out how to make these operators behave closer to perl builtins. Nesting is perfectly legal, but multiple infix operators cant coexists within one set of parentheses.