>Jensen Kenneth B Sra Afpc/Dpdmpq wrote:
>> 
>> 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,
>
>WHY??

Because it would involve the sysadmin team here to do some work and learn a
little UNIX to install the latest version. On our hp-unix systems.

>> 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;
>
>$_spath =~ s{^\.}
>            { $path = `pwd`;
>              chop $path;
>              $path
>            }e;

I wasn't aware I could have multiple commands in there. Had to change it
around so perl4 would be happy, no white space and restricted to using s///.
Thanks
$_spath =~ s/^\./$path =`pwd`;chop $path;$path/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?
>
>It works, it's just that you have to return the path not the return value
of chop.

I figured that was what was happening, but I thought it should have returned
the new value of $path.

>> 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
>
>#!/usr/contrib/bin/perl -w

I only use the -w when I am developing it, as this is a script that can
iterate several thousand times depending on the depth of the directories. I
didn't want to see the same warning message that many times. :)

>> ($_pattern, $_start) = (shift, shift);
>> print "Starting search at: $_start\n";
>> 
>> chdir "$_start";
>
>Useless use of quotes.  You should verify that chdir worked.
>
>unless ( chdir $_start ) {
>    print STDERR "Cannot chdir to $_start: $!";
>    exit 1;
>    }
>
>
>> opendir (DIR, "$_start");
>
>Useless use of quotes.  You should verify that opendir worked.
>
>unless ( opendir( DIR, $_start ) ) {
>    print STDERR "Cannot open $_start: $!";
>    exit 1;
>    }

I didn't want to trap errors on the chdir's or opendirs. If it fails its
because I don't have the permissions to open that directory, and it should
be skipped anyway. The use of quotes may be useless, but it's just more
aesthetically appealing to me. I doubt they really effect processing speed
by any measurable amount anyway :).

Thanks for the input John!

Ken


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to