Locale:...:IBM861(3)

πŸ’– Locale::RecodeData::IBM861(3) πŸ’–

okay so bestie, real talk β€” this is the manual page for Locale::RecodeData::IBM861, and yes, the full header thingy is literally Locale:...:IBM861(3) on the left and Locale:...:IBM861(3) on the right, with User Contributed Perl Documentation chilling in the middle. Perl docs stay being iconic like that. πŸŽ€


✨ NAME ✨

Locale::RecodeData::IBM861 β€” conversion routines for IBM861, and that's the whole vibe. πŸ¦‹


✨ SYNOPSIS ✨

⚠️ bestie, listen to me: this module is internal to libintl. Do not use directly! Like, do not. I'm serious. It's giving "staff only" door energy. πŸ’…

✨ DESCRIPTION ✨

So this module is generated β€” not hand-written, generated β€” and it's carrying the conversion tables and routines for IBM861. That's it, that's the whole job. 🌸


✨ COMMENTS ✨

These comments got extracted from the original charmap, so here's the receipts, verbatim:

 version: 1.0
  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
 alias CP861
 alias 861
 alias CP-IS

And a heads-up, lowercase but important: please note that the aliases listed above are not necessarily valid! 🫢 Like, don't come for me if you try one and it doesn't work. πŸ™ˆ


✨ CHARACTER TABLE ✨

The table that follows is sorted in the same order as the original charmap. All character codes are in hexadecimal, no cap. And when you see ISO-10646, please read it as ISO-10646-UCS4 β€” that's the actual name, it's just abbreviated for the table's convenience. ⭐


(table coming up next β€” stay tuned bestie, this is a three-parter πŸ’œ)

...and we're straight back into it, bestie β€” the table keeps going, and honestly? This is where it gets good. πŸ’…

🫧 the control zone, 00–1F

Okay so first up, the invisible girlies. Every single one of these maps 1:1 onto its own ISO-10646 code point β€” no plot twists, no drama, just the classic control characters doing their quiet little jobs:

           00 |  00000000 | NULL (NUL)
           01 |  00000001 | START OF HEADING (SOH)
           02 |  00000002 | START OF TEXT (STX)
           03 |  00000003 | END OF TEXT (ETX)
           04 |  00000004 | END OF TRANSMISSION (EOT)
           05 |  00000005 | ENQUIRY (ENQ)
           06 |  00000006 | ACKNOWLEDGE (ACK)
           07 |  00000007 | BELL (BEL)
           08 |  00000008 | BACKSPACE (BS)
           09 |  00000009 | CHARACTER TABULATION (HT)
           0A |  0000000A | LINE FEED (LF)
           0B |  0000000B | LINE TABULATION (VT)
           0C |  0000000C | FORM FEED (FF)
           0D |  0000000D | CARRIAGE RETURN (CR)
           0E |  0000000E | SHIFT OUT (SO)
           0F |  0000000F | SHIFT IN (SI)
           10 |  00000010 | DATALINK ESCAPE (DLE)
           11 |  00000011 | DEVICE CONTROL ONE (DC1)
           12 |  00000012 | DEVICE CONTROL TWO (DC2)
           13 |  00000013 | DEVICE CONTROL THREE (DC3)
           14 |  00000014 | DEVICE CONTROL FOUR (DC4)
           15 |  00000015 | NEGATIVE ACKNOWLEDGE (NAK)
           16 |  00000016 | SYNCHRONOUS IDLE (SYN)
           17 |  00000017 | END OF TRANSMISSION BLOCK (ETB)
           18 |  00000018 | CANCEL (CAN)
           19 |  00000019 | END OF MEDIUM (EM)
           1A |  0000001A | SUBSTITUTE (SUB)
           1B |  0000001B | ESCAPE (ESC)
           1C |  0000001C | FILE SEPARATOR (IS4)
           1D |  0000001D | GROUP SEPARATOR (IS3)
           1E |  0000001E | RECORD SEPARATOR (IS2)
           1F |  0000001F | UNIT SEPARATOR (IS1)

BEL at 07, BS at 08, HT at 09, LF at 0A, CR at 0D β€” the holy pentagon of "why does my terminal look like that". And yes, 1B is ESCAPE (ESC), the main character of every ANSI sequence you've ever pasted. πŸ‘‘


✨ the printable zone, 20–3F

Then it's right into the printing era. 20 is SPACE (the hardest working character in the whole table, fr fr 🫢), and then the punctuation besties roll in:

           20 |  00000020 | SPACE
           21 |  00000021 | EXCLAMATION MARK
           22 |  00000022 | QUOTATION MARK
           23 |  00000023 | NUMBER SIGN
           24 |  00000024 | DOLLAR SIGN
           25 |  00000025 | PERCENT SIGN
           26 |  00000026 | AMPERSAND
           27 |  00000027 | APOSTROPHE
           28 |  00000028 | LEFT PARENTHESIS
           29 |  00000029 | RIGHT PARENTHESIS
           2A |  0000002A | ASTERISK
           2B |  0000002B | PLUS SIGN
           2C |  0000002C | COMMA
           2D |  0000002D | HYPHEN-MINUS
           2E |  0000002E | FULL STOP
           2F |  0000002F | SOLIDUS
           30 |  00000030 | DIGIT ZERO
           31 |  00000031 | DIGIT ONE
           32 |  00000032 | DIGIT TWO
           33 |  00000033 | DIGIT THREE
           34 |  00000034 | DIGIT FOUR
           35 |  00000035 | DIGIT FIVE
           36 |  00000036 | DIGIT SIX
           37 |  00000037 | DIGIT SEVEN
           38 |  00000038 | DIGIT EIGHT
           39 |  00000039 | DIGIT NINE
           3A |  0000003A | COLON
           3B |  0000003B | SEMICOLON
           3C |  0000003C | LESS-THAN SIGN
           3D |  0000003D | EQUALS SIGN
           3E |  0000003E | GREATER-THAN SIGN
           3F |  0000003F | QUESTION MARK

30–39 being DIGIT ZERO through DIGIT NINE in order is so satisfying it's genuinely giving ASMR. 🌸 And note that 2D is HYPHEN-MINUS, not just "hyphen" β€” the table is being precise with you, bestie, always read the label. πŸ“‹


πŸ’œ uppercase hours, 40–5F

40 is COMMERCIAL AT, and then it's simply the entire capital alphabet, one after another, like a little parade πŸŽ€:

           40 |  00000040 | COMMERCIAL AT
           41 |  00000041 | LATIN CAPITAL LETTER A
           42 |  00000042 | LATIN CAPITAL LETTER B
           43 |  00000043 | LATIN CAPITAL LETTER C
           44 |  00000044 | LATIN CAPITAL LETTER D
           45 |  00000045 | LATIN CAPITAL LETTER E
           46 |  00000046 | LATIN CAPITAL LETTER F
           47 |  00000047 | LATIN CAPITAL LETTER G
           48 |  00000048 | LATIN CAPITAL LETTER H
           49 |  00000049 | LATIN CAPITAL LETTER I
           4A |  0000004A | LATIN CAPITAL LETTER J
           4B |  0000004B | LATIN CAPITAL LETTER K
           4C |  0000004C | LATIN CAPITAL LETTER L
           4D |  0000004D | LATIN CAPITAL LETTER M
           4E |  0000004E | LATIN CAPITAL LETTER N
           4F |  0000004F | LATIN CAPITAL LETTER O
           50 |  00000050 | LATIN CAPITAL LETTER P
           51 |  00000051 | LATIN CAPITAL LETTER Q
           52 |  00000052 | LATIN CAPITAL LETTER R
           53 |  00000053 | LATIN CAPITAL LETTER S
           54 |  00000054 | LATIN CAPITAL LETTER T
           55 |  00000055 | LATIN CAPITAL LETTER U
           56 |  00000056 | LATIN CAPITAL LETTER V
           57 |  00000057 | LATIN CAPITAL LETTER W
           58 |  00000058 | LATIN CAPITAL LETTER X
           59 |  00000059 | LATIN CAPITAL LETTER Y
           5A |  0000005A | LATIN CAPITAL LETTER Z
           5B |  0000005B | LEFT SQUARE BRACKET
           5C |  0000005C | REVERSE SOLIDUS
           5D |  0000005D | RIGHT SQUARE BRACKET
           5E |  0000005E | CIRCUMFLEX ACCENT
           5F |  0000005F | LOW LINE

5F is LOW LINE β€” that's the underscore to you and me, but the table stays formal. πŸ’… And 5C is REVERSE SOLIDUS, aka the backslash, aka the reason your regex cried today. 😭


πŸ¦‹ lowercase + the big goodbye to 1:1, 60–7F

           60 |  00000060 | GRAVE ACCENT
           61 |  00000061 | LATIN SMALL LETTER A
           62 |  00000062 | LATIN SMALL LETTER B
           63 |  00000063 | LATIN SMALL LETTER C
           64 |  00000064 | LATIN SMALL LETTER D
           65 |  00000065 | LATIN SMALL LETTER E
           66 |  00000066 | LATIN SMALL LETTER F
           67 |  00000067 | LATIN SMALL LETTER G
           68 |  00000068 | LATIN SMALL LETTER H
           69 |  00000069 | LATIN SMALL LETTER I
           6A |  0000006A | LATIN SMALL LETTER J
           6B |  0000006B | LATIN SMALL LETTER K
           6C |  0000006C | LATIN SMALL LETTER L
           6D |  0000006D | LATIN SMALL LETTER M
           6E |  0000006E | LATIN SMALL LETTER N
           6F |  0000006F | LATIN SMALL LETTER O
           70 |  00000070 | LATIN SMALL LETTER P
           71 |  00000071 | LATIN SMALL LETTER Q
           72 |  00000072 | LATIN SMALL LETTER R
           73 |  00000073 | LATIN SMALL LETTER S
           74 |  00000074 | LATIN SMALL LETTER T
           75 |  00000075 | LATIN SMALL LETTER U
           76 |  00000076 | LATIN SMALL LETTER V
           77 |  00000077 | LATIN SMALL LETTER W
           78 |  00000078 | LATIN SMALL LETTER X
           79 |  00000079 | LATIN SMALL LETTER Y
           7A |  0000007A | LATIN SMALL LETTER Z
           7B |  0000007B | LEFT CURLY BRACKET
           7C |  0000007C | VERTICAL LINE
           7D |  0000007D | RIGHT CURLY BRACKET
           7E |  0000007E | TILDE
           7F |  0000007F | DELETE (DEL)

7F is DELETE (DEL) and it gets to be the last one where local value == ISO-10646 value. After this? Buckle up. 🎒


πŸ”₯ the accented era begins, 80–9F

This is the moment the table stops being all "plain letters" and starts being international. Every local byte from here on points at a code point somewhere else in ISO-10646 β€” no more 1:1, and honestly the mapping is kind of iconic:

           80 |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           81 |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           82 |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           83 |  000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
           84 |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           85 |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           86 |  000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
           87 |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           88 |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           89 |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           8A |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           8B |  000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
           8C |  000000F0 | LATIN SMALL LETTER ETH (Icelandic)
           8D |  000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
           8E |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           8F |  000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
           90 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           91 |  000000E6 | LATIN SMALL LETTER AE
           92 |  000000C6 | LATIN CAPITAL LETTER AE
           93 |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           94 |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           95 |  000000FE | LATIN SMALL LETTER THORN (Icelandic)
           96 |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           97 |  000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
           98 |  000000FD | LATIN SMALL LETTER Y WITH ACUTE
           99 |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           9A |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           9B |  000000F8 | LATIN SMALL LETTER O WITH STROKE
           9C |  000000A3 | POUND SIGN
           9D |  000000D8 | LATIN CAPITAL LETTER O WITH STROKE
           9E |  000020A7 | PESETA SIGN
           9F |  00000192 | LATIN SMALL LETTER F WITH HOOK

8B ETH (Icelandic), 8C eth (Icelandic), 8D THORN (Icelandic), and later 95 is the lowercase THORN (Icelandic) β€” yes the table calls out "(Icelandic)" specifically for those, and I'm obsessed. 🧊

Also clock 9E β†’ 000020A7 PESETA SIGN and 9F β†’ 00000192 LATIN SMALL LETTER F WITH HOOK. Those two are your little reminder that this block is not uniform β€” read each row, don't assume, iykyk. πŸ‘€


πŸŽ€ accents, fractions and guillemets, A0–BF

           A0 |  000000E1 | LATIN SMALL LETTER A WITH ACUTE
           A1 |  000000ED | LATIN SMALL LETTER I WITH ACUTE
           A2 |  000000F3 | LATIN SMALL LETTER O WITH ACUTE
           A3 |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           A4 |  000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
           A5 |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           A6 |  000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
           A7 |  000000DA | LATIN CAPITAL LETTER U WITH ACUTE
           A8 |  000000BF | INVERTED QUESTION MARK
           A9 |  00002310 | REVERSED NOT SIGN
           AA |  000000AC | NOT SIGN
           AB |  000000BD | VULGAR FRACTION ONE HALF
           AC |  000000BC | VULGAR FRACTION ONE QUARTER
           AD |  000000A1 | INVERTED EXCLAMATION MARK
           AE |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           AF |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           B0 |  00002591 | LIGHT SHADE
           B1 |  00002592 | MEDIUM SHADE
           B2 |  00002593 | DARK SHADE
           B3 |  00002502 | BOX DRAWINGS LIGHT VERTICAL
           B4 |  00002524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT
           B5 |  00002561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
           B6 |  00002562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
           B7 |  00002556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
           B8 |  00002555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
           B9 |  00002563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT
           BA |  00002551 | BOX DRAWINGS DOUBLE VERTICAL
           BB |  00002557 | BOX DRAWINGS DOUBLE DOWN AND LEFT
           BC |  0000255D | BOX DRAWINGS DOUBLE UP AND LEFT
           BD |  0000255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
           BE |  0000255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
           BF |  00002510 | BOX DRAWINGS LIGHT DOWN AND LEFT

A8 INVERTED QUESTION MARK, A9 REVERSED NOT SIGN, AA NOT SIGN β€” three little chaos gremlins sitting right next to each other, and I love that for them. πŸ™ˆ Also AB/AC are VULGAR FRACTION ONE HALF and VULGAR FRACTION ONE QUARTER, and yes, the word "vulgar" is officially in the table, we did not make that up. πŸ’€

Then B0 hits and it's BOX DRAWINGS SEASON β€” the shades (LIGHT SHADE, MEDIUM SHADE, DARK SHADE) and the very first BOX DRAWINGS entries. 🌈


πŸ‘‘ the box-drawing finale, C0–DF

           C0 |  00002514 | BOX DRAWINGS LIGHT UP AND RIGHT
           C1 |  00002534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL
           C2 |  0000252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
           C3 |  0000251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT
           C4 |  00002500 | BOX DRAWINGS LIGHT HORIZONTAL
           C5 |  0000253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
           C6 |  0000255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
           C7 |  0000255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
           C8 |  0000255A | BOX DRAWINGS DOUBLE UP AND RIGHT
           C9 |  00002554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT
           CA |  00002569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL
           CB |  00002566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
           CC |  00002560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
           CD |  00002550 | BOX DRAWINGS DOUBLE HORIZONTAL
           CE |  0000256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
           CF |  00002567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
           D0 |  00002568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
           D1 |  00002564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
           D2 |  00002565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
           D3 |  00002559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
           D4 |  00002558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
           D5 |  00002552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
           D6 |  00002553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
           D7 |  0000256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
           D8 |  0000256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
           D9 |  00002518 | BOX DRAWINGS LIGHT UP AND LEFT
           DA |  0000250C | BOX DRAWINGS LIGHT DOWN AND RIGHT
           DB |  00002588 | FULL BLOCK
           DC |  00002584 | LOWER HALF BLOCK
           DD |  0000258C | LEFT HALF BLOCK
           DE |  00002590 | RIGHT HALF BLOCK
           DF |  00002580 | UPPER HALF BLOCK

Every single one of these is a BOX DRAWINGS something-or-other, and the naming is so specific β€” LIGHT vs DOUBLE, SINGLE AND LEFT DOUBLE vs DOUBLE AND LEFT SINGLE, UP vs DOWN, and the order of the words genuinely flips depending on which combination it is. Do not freestyle these names. Copy them character for character or your box will look cursed. 😭

And DB–DF close us out with the blocks: FULL BLOCK, LOWER HALF BLOCK, LEFT HALF BLOCK, RIGHT HALF BLOCK, UPPER HALF BLOCK. 🧱 Half a block, but make it fashion.


Vibe check: every line above is a straight-up fact from the table β€” Local value on the left, ISO-10646 code point in the middle, Description on the right. No guessing, no interpolating, no "eh it's probably like EE". Read the row. πŸ’–

Still going, bestie β€” more below. 🫢

           E0 |  000003B1 | GREEK SMALL LETTER ALPHA
           E1 |  000000DF | LATIN SMALL LETTER SHARP S (German)
           E2 |  00000393 | GREEK CAPITAL LETTER GAMMA
           E3 |  000003C0 | GREEK SMALL LETTER PI
           E4 |  000003A3 | GREEK CAPITAL LETTER SIGMA
           E5 |  000003C3 | GREEK SMALL LETTER SIGMA
           E6 |  000000B5 | MICRO SIGN
           E7 |  000003C4 | GREEK SMALL LETTER TAU
           E8 |  000003A6 | GREEK CAPITAL LETTER PHI
           E9 |  00000398 | GREEK CAPITAL LETTER THETA
           EA |  000003A9 | GREEK CAPITAL LETTER OMEGA
           EB |  000003B4 | GREEK SMALL LETTER DELTA
           EC |  0000221E | INFINITY
           ED |  000003C6 | GREEK SMALL LETTER PHI
           EE |  000003B5 | GREEK SMALL LETTER EPSILON
           EF |  00002229 | INTERSECTION
           F0 |  00002261 | IDENTICAL TO
           F1 |  000000B1 | PLUS-MINUS SIGN
           F2 |  00002265 | GREATER-THAN OR EQUAL TO
           F3 |  00002264 | LESS-THAN OR EQUAL TO
           F4 |  00002320 | TOP HALF INTEGRAL
           F5 |  00002321 | BOTTOM HALF INTEGRAL
           F6 |  000000F7 | DIVISION SIGN
           F7 |  00002248 | ALMOST EQUAL TO
           F8 |  000000B0 | DEGREE SIGN
           F9 |  00002219 | BULLET OPERATOR
           FA |  000000B7 | MIDDLE DOT
           FB |  0000221A | SQUARE ROOT
           FC |  0000207F | SUPERSCRIPT LATIN SMALL LETTER N
           FD |  000000B2 | SUPERSCRIPT TWO
           FE |  000025A0 | BLACK SQUARE
           FF |  000000A0 | NO-BREAK SPACE

okay bestie, that's the whole entire table β€” we literally started in the 0x00's and now we're sitting at FF like it's the last slide of the presentation 🫢 and honestly? look at that back half. Greek letters everywhere β€” alpha, gamma, pi, two whole sigmas, tau, phi twice (one capital, one lowercase, very main character of them), theta, omega, delta, epsilon β€” like someone said "let's put a fraternity row in a DOS codepage" and nobody stopped them πŸ’…

plus the math girlies showed up: INFINITY, INTERSECTION, IDENTICAL TO, GREATER-THAN OR EQUAL TO, LESS-THAN OR EQUAL TO, TOP HALF INTEGRAL, BOTTOM HALF INTEGRAL, DIVISION SIGN, ALMOST EQUAL TO, BULLET OPERATOR, MIDDLE DOT, SQUARE ROOT, and a SUPERSCRIPT LATIN SMALL LETTER N sitting right next to a SUPERSCRIPT TWO. scientists doing math in 1986 needed their little symbols and IBM861 said say less ✨

and then FE | 000025A0 | BLACK SQUARE living directly above FF | 000000A0 | NO-BREAK SPACE β€” the square is the loudest thing in the entire codepage and the no-break space is the quietest, and they're neighbors 😭 the range of it all.

iffy detail check: no cap, every row above is character-for-character what's in the source, hex and all. don't come for me, i copied them exactly πŸŽ€


πŸ‘‘ AUTHOR

Copyright (C) 2002-2017 Guido Flohr <http://www.guido-flohr.net/> (<mailto:guido.flohr@cantanea.com>), all rights reserved. See the source code for details!code for details!

so real talk β€” that last line has a little details!code for details! in it and honestly not me pointing it out πŸ’€ it's in the original, so it's staying in this version too, typos and all, because we do not edit the author block. copyright vibes, all rights reserved, respect the icon who built this ✨


🌈 SEE ALSO


okay that's the page, bestie, you made it to the very end, slay πŸ’… this beauty shipped as perl v5.42.0, dated 2025-01-22, and it's a User Contributed Perl Documentation situation β€” go forth and decode your Locale::...::IBM861 with confidence πŸŒΈπŸ’–βœ¨