sub ProcessFile { my ( $path, $windows ) = @_; my $pid = 0; if ( $windows ) { open \*FH, "<$path" or die "$!: $path"; } else { $pid = open \*FH, "dos2unix $path |" or die "$!: dos2unix $path |"; } my $fh = \*FH; # file content (<$fh>) is now unix/dos transparent close $fh; $pid and waitpid $pid,0; }