1) readdir returns only the filename whereas -f needs (in general) the path appended to the front. Example:
2) carriage control will be different but there is a dos program called unix2dos as well as a unix program called dos2unix that translates accordingly. For example:sub Traverse { my $dir = shift; opendir my $dh, $dir or return 0; for my $file ( grep !/^\.\.?$/, readdir $dh ) { my $path = "$dir/$file"; if ( -d $path ) { Traverse( $path, @_ ); } elsif ( -f $path ) { ProcessFile( $path, @_ ); } else { warn "$path not -d or -f\n"; } } closedir $dh; }
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; }
-M
Free your mind
In reply to Re: directories and charsets
by Moron
in thread directories and charsets
by soliplaya
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |