I'd say, Because Perl's print prints that character and more and less do a conversion before/during printing; so the user can "see" (recognize) the special characters...
update:
You could do a conversion of that characters to a visible character/string before you let Perl print it...
Try to redirect the perl's output into a file and check that file with less or more... You should see your ^A again...
update2:
My less on my linux box knows an option -r which disables the behaviour, that \x01 is printed as ^A...
...
-r or --raw-control-chars
Causes "raw" control characters to be displayed. The default is
to display control characters using the caret notation; for example,
a control-A (octal 001) is displayed as "^A". Warning: when the -r
option is used, less cannot keep track of the actual appearance of
the screen (since this depends on how the screen responds to each
type of control character). Thus, various display problems may result,
such as long lines being split in the wrong place.
... In reply to Re^3: how to output special characters?
by linuxer
in thread how to output special characters?
by perlfan99
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |