Trying to get this to work on one line, but not having any success. In my
boredom I re-wrote the find command using perl4, and in tweaking it I'm
running into a problem.  When I type in a starting search path as
"./something/something" I want to replace the "." with the current working
directory. Since I am forced to use perl4, the only way I know to grab the
directory is using system commands "pwd" or "dirs -l". Those system commands
append a carriage return, which is where my problem comes in. Here's some of
the lines I've tried

$_spath = shift;
print "$_spath\n";
$path = `pwd`;
#$_spath =~ s/^\./(($path=`pwd`) =~ s/\n//))/e;
#($_spath =~ s/^\./$path=`pwd`/e) =~ chop($_spath);
#($chop($path)) =~ $_spath =~ s/^\./$path = `pwd`/e;
#($_spath =~ s/^\./($path=`pwd`) =~ chop($path)/e);
$_spath =~ s/^\./chop(`pwd`)/e;
print "$_spath\n";

I've tried dozens of ways in one command, but can't get rid of that carriage
return. Chop works fine as long as I don't try to do it inside the
substitution, reason for that?

In a nutshell I am just trying to make my little searching script identify a
path beginning with "." and replace that with the pwd, so I don't have to
type out absolute paths every time. FWIW, here's that script

#!/usr/contrib/bin/perl

($_pattern, $_start) = (shift, shift);
print "Starting search at: $_start\n";

chdir "$_start";
opendir (DIR, "$_start");
  foreach (sort readdir(DIR)){
    -d $_ ?
((/^\.\.$|^\.$/)?(next):(push(@tree,$_start."/".$_))):(grep(/$_pattern/,$_)?
(print "file: $_start\/$_\n"):(next));
    -d $_ ? (grep(/$_pattern/,$_) ? (print "dir: $_start\/$_\n"):()):();
  }
closedir (DIR);

&cascade(shift(@tree)) while ($#tree ne -1);

sub cascade {
  $SubDir = shift;
  print "$SubDir\n" if grep(/$_pattern$/,$SubDir);
  chdir "$SubDir";
  opendir (SUBDIR, "$SubDir");
    foreach (sort readdir(SUBDIR)) {
      -d $_ ?
((/^\.\.$|^\.$/)?(next):(push(@tree,$SubDir."/".$_))):(grep(/$_pattern/,$_)?
(print "file: $SubDir\/$_\n"):(next));
    }    
  closedir (SUBDIR);
}

TIA,

Ken

P.S. "chomp()" is not available in perl4.

Reply via email to