Hello Carl and everybody.

> Am 10.04.2004 4:03 Uhr schrieb Carl Miller (<[EMAIL PROTECTED]>):
> MacPerl novice here, hoping someone can help me solve a problem. I'm running
> MacPerl 5.6.1.
> 
> ... ... ... 
> 
> So, to address this, I've added an -f test in the loop:
> 
> foreach $FileName (@AllFiles)
> {
> 
>     #if its a file, and not a directory, update it.
>     if (-f $FileName) {
>         
>         [.....do updates.....]
> 
>     }#end if file
> }#end foreach
> 
> ... ... ... 
> 
> Can anyone tell me what I'm missing?
> 
> Thanks.
> 

As far as I can see your syntax is correct and SHOULD work (but then I don't
understand why it *does not* work in the first and *does work* in the second
case -- this is strange).

But there is a common case on the Mac that can cause problems like yours.
If the script tries to execute an invisible file (e.g. "ICON"), it may die.
Suggestions: 
(1) Filter your files (... highly recommended):
if (-f $FileName) {
    next if ($FileName =~ m/icon$/i); # don't forget the $-anchor
                                      # and the i-modifier
    
    [.....do updates.....]
} 

In general, you should find some rule(s) that only matches the file you want
to process, and that excludes files you want to ignore.
(You can also try to implement an "invisibility"-test, but that's more code
and more complicated, so try to find an easy way.)


(2) Is there any error-catching in your update-code
(like ' update this file or die "Hey, there's an interesting error with file
$FileName." ')?

Regards 

Joerg Beyer
[EMAIL PROTECTED]

Reply via email to