1*f2a19305Safresh1BEGIN { 2*f2a19305Safresh1 if ( $] < 5.009 ) { 3*f2a19305Safresh1 print "1..0 # Skip: Perl <= 5.9 or later required\n"; 4*f2a19305Safresh1 exit 0; 5*f2a19305Safresh1 } 6*f2a19305Safresh1} 7256a93a4Safresh1use strict; 8256a93a4Safresh1use Test::More; 9256a93a4Safresh1 10256a93a4Safresh1use Encode; 11256a93a4Safresh1use File::Temp; 12256a93a4Safresh1use File::Spec; 13256a93a4Safresh1 14256a93a4Safresh1# This test relies on https://github.com/Perl/perl5/issues/10623; 15256a93a4Safresh1# if that bug is ever fixed then this test may never fail again. 16256a93a4Safresh1 17256a93a4Safresh1my $foo = Encode::decode("UTF-16LE", "/\0v\0a\0r\0/\0f\0f\0f\0f\0f\0f\0/\0u\0s\0e\0r\0s\0/\0s\0u\0p\0e\0r\0m\0a\0n\0"); 18256a93a4Safresh1 19256a93a4Safresh1my ($fh, $path) = File::Temp::tempfile( CLEANUP => 1 ); 20256a93a4Safresh1 21256a93a4Safresh1note "temp file: $path"; 22256a93a4Safresh1 23256a93a4Safresh1# Perl gives the internal PV to exec .. which is buggy/wrong but 24256a93a4Safresh1# useful here: 25256a93a4Safresh1system( $^X, '-e', "open my \$fh, '>>', '$path' or die \$!; print {\$fh} \$ARGV[0]", $foo ); 26256a93a4Safresh1die if $?; 27256a93a4Safresh1 28256a93a4Safresh1my $output = do { local $/; <$fh> }; 29256a93a4Safresh1 30256a93a4Safresh1is( $output, "/var/ffffff/users/superman", 'UTF-16 decodes with trailing NUL' ); 31256a93a4Safresh1 32256a93a4Safresh1done_testing(); 33