in reply to Re: File::Find with sudo from root
in thread File::Find with sudo from root

I'm not as familar with the "$/ = chr(0);" line. I know it changes the line termintion which I'm assuming is necessary to properly take in the pipe from find. (I haven't had a chance to test difference to see what happens.)

I did take a quick look in the documentation (http://search.cpan.org/~rgarcia/perl-5.9.4/pod/perlvar.pod) and it seems like it would be a little safer make the change local like:

#!/usr/bin/perl -w use strict; my @dirlist = qw(/dir/to/parse); open( FIND, '-|', 'find', @dirlist, qw/-print0/ ) or die "find: $!"; { local $/ = chr(0); while (<FIND>) { chomp; print "Processing: $_\n"; } }

From what I gather form the docs, this will make sure that the $/ change doesn't affect anything else and cause unexpected behavior. PLEASE NOTE, I have not had a chance to test that code, so it may not work in part or whole.

Replies are listed 'Best First'.
Re^3: File::Find with sudo from root
by kyle (Abbot) on Jan 19, 2007 at 17:19 UTC

    I'm not as familar with the "$/ = chr(0);" line. I know it changes the line termintion which I'm assuming is necessary to properly take in the pipe from find.

    This is correct. In this example, find gets the -print0 option, which causes it to terminate file names with a null character (chr(0) or "\000") instead of a newline. This is useful because filenames can't contain a null, but they can contain a newline.

    I'd agree also with your use of local to scope the change to $/.