Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
A couple of comments on your code ...

The readdir function iterates through each directory entry opened by opendir - Your code doesn't test whether the returned entry is either a file or directory and fails to iterate through any sub-directories present within the test directories. While not a problem per se, it does mean that great differences can exist between directories without being reported by your script.

Another issue lies with the order of code when calling stat on the returned directory entry, specifically the following code segment:

$values1 = stat($currentFile2) or warn "can't stat the file: $!\n"; $hashDir2{$currentFileCD} = { size =>$values1->size, mtime =>$values1->mtime, };

While a warning is generated when the file stat fails, your code continues through and still assigns return values from the failed stat to the directory hash. An alternate (more defensive) way to write this code would be:

if ( my $values = stat($currentFile2) ) { $hashDir2{ $currentFileCD } = { size => $values->size, mtime => $values->mtime } } else { warn "can't stat the file: $!\n" }

If you want to build a more robust file comparison tool that incorporates directory checking, you may want to look at the source to File::Find::Duplicates which builds an intermediate array of stat values for files found through File::Find.

On a much smaller and less significant note ... "This script will compare the same directory on two different machines for content, size and mtime" ... Where is the code comparing file content?

:-)

 

perl -e 's&&rob@cowsnet.com.au&&&split/[@.]/&&s&.com.&_&&&print'


In reply to Re: Comparedirs.pl by rob_au
in thread Comparedirs.pl by RayRay459

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2024-04-25 15:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found