Re: globbing with Apple's HFS+

2007-05-22 Thread Jeremiah Foster
Just wanted to second Kenny's good advice regarding File::Find. It is a
very good tool and will make life a lot easier for you.

Jeremiah

Sun, May 20, 2007 at 01:06:35PM -0400:  Kenny Gatdula mangled some bits into 
this alignment:
 Hi Doug,
 I really couldn't tell you if this is a known problem, but, this  
 seems to be a job for File::Find.
 
 Hope this helps,
 Kenny
 
 
 use File::Find;
 use File::Basename;
 
 my @directories_to_search = '/Users/kennyg';
 
 find(\wanted, @directories_to_search);
 
 sub wanted {
 my $file = $_;
 my $dir = $File::Find::dir;
 next unless $file =~ /\.pl/;
 my $dirname = basename($dir);
 my $filename = fileparse($file,'.pl');
 next unless $filename eq $dirname;
 print Found $file in $dir\n;
 }
 
 
 On May 19, 2007, at 9:15 PM, Doug McNutt wrote:
 
 The Camel book is a bit scary describing performance of filename  
 globbing with the *.pl or the glob(*.pl) syntax with or without  
 use Cwd in the preamble. Portability is declared questionable.
 
 I find that the only thing that works is * within a loop where  
 each file is tested by hand.
 
 Consider this bit of doggerel.  I'm looking for special cases of a  
 *.pl file that appears where * means the short name of the  
 enclosing directory. Note especially the last command in the  
 second while loop. It works not!  What happens is that the second  
 pass through the while() loop begins in the previous directory at  
 the point where it was cut short after finding the file I want. If  
 I comment out the last statement, so that all of the files in the  
 directory are processed, everything works.
 
 my ($trial, $ddd, $lookfor, $error, $nextdir);
 @thefolders = ();
 @directories = ();
 while ($trial = *)
 {
 if (-d $trial)
 {
 push @thefolders, $trial;
 #  print REPORT $trial\n;
 }
 }
 for $ddd (@thefolders)
 {
 $lookfor = $ddd.pl;
 $nextdir = $mybase/$ddd;  # $mybase, global, is full path to  
 initial directory.
 $error = chdir $nextdir;
 while (*)
 {
 if ($_ eq $lookfor)
 {
 push @directories, $ddd;
 #  print REPORT Added directory $ddd,  $lookfor in $ddd\n;
 #  last;  # Fails.  while() continues where it left off in  
 the previous pass
 }
 }
 }
 
 If I try finding *.pl, $lookfor, or glob($lookfor) I get a  
 real mess with hits from directories that bear no resemblance to  
 the most recent chdir which returned without error.
 
 Making the second while loop operate within the while looking for  
 directories is even worse.
 
 I'll probably get around to looking more deeply but there's little  
 point if someone here knows that it's all a known problem on MacOS  
 neXt.  (10.3.9 here because I need to talk to my SE/30 file  
 server.) Oh It's perl 5.8.1-RC3.
 
 -- 
 
 Applescript syntax is like English spelling:
 Roughly, though not thoroughly, thought through.
 


globbing with Apple's HFS+

2007-05-21 Thread Doug McNutt
The Camel book is a bit scary describing performance of filename globbing with 
the *.pl or the glob(*.pl) syntax with or without use Cwd in the 
preamble. Portability is declared questionable.

I find that the only thing that works is * within a loop where each file is 
tested by hand.

Consider this bit of doggerel.  I'm looking for special cases of a *.pl file 
that appears where * means the short name of the enclosing directory. Note 
especially the last command in the second while loop. It works not!  What 
happens is that the second pass through the while() loop begins in the previous 
directory at the point where it was cut short after finding the file I want. If 
I comment out the last statement, so that all of the files in the directory are 
processed, everything works.

my ($trial, $ddd, $lookfor, $error, $nextdir);
@thefolders = ();
@directories = ();
while ($trial = *)
{
if (-d $trial)
{
push @thefolders, $trial;
#  print REPORT $trial\n;
}
}
for $ddd (@thefolders)
{
$lookfor = $ddd.pl;
$nextdir = $mybase/$ddd;  # $mybase, global, is full path to initial 
directory.
$error = chdir $nextdir;
while (*)
{
if ($_ eq $lookfor)
{
push @directories, $ddd;
#  print REPORT Added directory $ddd,  $lookfor in $ddd\n;
#  last;  # Fails.  while() continues where it left off in the previous 
pass
}
}
}

If I try finding *.pl, $lookfor, or glob($lookfor) I get a real mess with 
hits from directories that bear no resemblance to the most recent chdir which 
returned without error.

Making the second while loop operate within the while looking for directories 
is even worse.

I'll probably get around to looking more deeply but there's little point if 
someone here knows that it's all a known problem on MacOS neXt.  (10.3.9 here 
because I need to talk to my SE/30 file server.) Oh It's perl 5.8.1-RC3.

-- 

Applescript syntax is like English spelling:
Roughly, though not thoroughly, thought through.


Re: globbing with Apple's HFS+

2007-05-20 Thread Kenny Gatdula

Hi Doug,
I really couldn't tell you if this is a known problem, but, this  
seems to be a job for File::Find.


Hope this helps,
Kenny


use File::Find;
use File::Basename;

my @directories_to_search = '/Users/kennyg';

find(\wanted, @directories_to_search);

sub wanted {
my $file = $_;
my $dir = $File::Find::dir;
next unless $file =~ /\.pl/;
my $dirname = basename($dir);
my $filename = fileparse($file,'.pl');
next unless $filename eq $dirname;
print Found $file in $dir\n;
}


On May 19, 2007, at 9:15 PM, Doug McNutt wrote:

The Camel book is a bit scary describing performance of filename  
globbing with the *.pl or the glob(*.pl) syntax with or without  
use Cwd in the preamble. Portability is declared questionable.


I find that the only thing that works is * within a loop where  
each file is tested by hand.


Consider this bit of doggerel.  I'm looking for special cases of a  
*.pl file that appears where * means the short name of the  
enclosing directory. Note especially the last command in the  
second while loop. It works not!  What happens is that the second  
pass through the while() loop begins in the previous directory at  
the point where it was cut short after finding the file I want. If  
I comment out the last statement, so that all of the files in the  
directory are processed, everything works.


my ($trial, $ddd, $lookfor, $error, $nextdir);
@thefolders = ();
@directories = ();
while ($trial = *)
{
if (-d $trial)
{
push @thefolders, $trial;
#  print REPORT $trial\n;
}
}
for $ddd (@thefolders)
{
$lookfor = $ddd.pl;
$nextdir = $mybase/$ddd;  # $mybase, global, is full path to  
initial directory.

$error = chdir $nextdir;
while (*)
{
if ($_ eq $lookfor)
{
push @directories, $ddd;
#  print REPORT Added directory $ddd,  $lookfor in $ddd\n;
#  last;  # Fails.  while() continues where it left off in  
the previous pass

}
}
}

If I try finding *.pl, $lookfor, or glob($lookfor) I get a  
real mess with hits from directories that bear no resemblance to  
the most recent chdir which returned without error.


Making the second while loop operate within the while looking for  
directories is even worse.


I'll probably get around to looking more deeply but there's little  
point if someone here knows that it's all a known problem on MacOS  
neXt.  (10.3.9 here because I need to talk to my SE/30 file  
server.) Oh It's perl 5.8.1-RC3.


--

Applescript syntax is like English spelling:
Roughly, though not thoroughly, thought through.




globbing with Apple's HFS+

2007-05-19 Thread Doug McNutt
The Camel book is a bit scary describing performance of filename globbing with 
the *.pl or the glob(*.pl) syntax with or without use Cwd in the 
preamble. Portability is declared questionable.

I find that the only thing that works is * within a loop where each file is 
tested by hand.

Consider this bit of doggerel.  I'm looking for special cases of a *.pl file 
that appears where * means the short name of the enclosing directory. Note 
especially the last command in the second while loop. It works not!  What 
happens is that the second pass through the while() loop begins in the previous 
directory at the point where it was cut short after finding the file I want. If 
I comment out the last statement, so that all of the files in the directory are 
processed, everything works.

my ($trial, $ddd, $lookfor, $error, $nextdir);
@thefolders = ();
@directories = ();
while ($trial = *)
{
if (-d $trial)
{
push @thefolders, $trial;
#  print REPORT $trial\n;
}
}
for $ddd (@thefolders)
{
$lookfor = $ddd.pl;
$nextdir = $mybase/$ddd;  # $mybase, global, is full path to initial 
directory.
$error = chdir $nextdir;
while (*)
{
if ($_ eq $lookfor)
{
push @directories, $ddd;
#  print REPORT Added directory $ddd,  $lookfor in $ddd\n;
#  last;  # Fails.  while() continues where it left off in the previous 
pass
}
}
}

If I try finding *.pl, $lookfor, or glob($lookfor) I get a real mess with 
hits from directories that bear no resemblance to the most recent chdir which 
returned without error.

Making the second while loop operate within the while looking for directories 
is even worse.

I'll probably get around to looking more deeply but there's little point if 
someone here knows that it's all a known problem on MacOS neXt.  (10.3.9 here 
because I need to talk to my SE/30 file server.) Oh It's perl 5.8.1-RC3.

-- 

Applescript syntax is like English spelling:
Roughly, though not thoroughly, thought through.