in reply to Re^2: problem to open a specified path file in open system call
in thread problem to open a specified path file in open system call

The problem with your usage on open is that it can't open a file with newline character in its name. As pointed out by tirwhan, the embedded newline characters in your filenames came from ls command. You need to chomp them.
my @files = `ls -1`; chomp @files; # or in one line chomp(my @files = `ls -1`);
Using built-in opendir and readdir would be safer for you, and no extra processes needed.

Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

Replies are listed 'Best First'.
Re^4: problem to open a specified path file in open system call
by blazar (Canon) on Jul 15, 2007 at 07:36 UTC
    The problem with your usage on open is that it can't open a file with newline character in its name.

    To be precise, open can open a file with newline characters in its name just fine, as long as they're supported by the filesystem and they do exist. Under *NIX the only forbidden charachters are "\0" and "/".

    blazar@perlmonk ~ $ perl -e 'open F, ">foo\nbar" or die' blazar@perlmonk ~ $ ls foo* foo?bar
      Thank you for clarifying this. I hope my reply wasn't leading to misinterpretation as I referred to newline characters "embedded" in the output by external program as they are not part of the original filenames.

      Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!