in reply to Re: binmode STDOUT, ":utf8"; and umlauts
in thread binmode STDOUT, ":utf8"; and umlauts
This demonstrates what's going on:
perl is evidently passing its internal representation of $name and $name2 to the operating system's open() routine, and the OS is simply using that sequence of bytes as the file name.#!/usr/bin/perl system("/bin/rm abc*"); system("/bin/ls"); # no files begin with "abc" my $name = "abc".chr(128); open(FOO, ">", $name); close(FOO); my $name2 = $name.chr(256); chop $name2; if ($name eq $name2) { print "\$name and \$name2 are ", ($name ne $name2 ? "not " : ""), "equal as perl strings\n"; } open(BAR, ">", $name2); close(BAR); system("/bin/ls"); # shows two files beginning with "abc"
|
|---|