in reply to Re^5: Handling file path with unusual characters
in thread Handling file path with unusual characters

Okey, I'll give it one more shot, then. First of all I'm on a Windows XP machine and my script will exclusively be used on Windows platforms. I'm using ActivePerl and I'm constructing a GUI where the user shall specify the path to a file. If strange characters are used in the path, my script does not work. Below is a simple example that does not work due to the characters in the path. If I select a path without é and ö it works.

#!/usr/bin/perl use warnings; use strict; my $path = 'C:\Idéer\Första\test.txt'; my @file = (); open(FILE,$path); @file = <FILE>; close(FILE);

The error message is:

readline() on closed filehandle FILE at C:\test\testing.pl line 10

Is it possible now to give me some hints on how to solve this?

Thanks in advance!

Replies are listed 'Best First'.
Re^7: Handling file path with unusual characters
by Corion (Patriarch) on Apr 04, 2011 at 15:48 UTC

    The first warning happens, because you don't check the return value of open. Use the following instead:

    open FILE, '<', $path or die "Couldn't open '$path': $!";

    The failure you will then discover happens because Perl expects filenames to have no encoding respectively passes the data from the script through directly to the OS, but your script is likely encoded in something other than Latin-1 or whatever Windows uses as the current default locale. See Opening files with japanese/chinese chars in filename for related discussion.