SPUG: regular expression difficulty, plus compiled perl

Todd Wells toddw at wrq.com
Tue Mar 28 11:24:37 CST 2000


Yes, dirname() is what I was looking for, just overlooked it in the cookbook
-- thank you!

Thanks to the academy and everyone who contributed...oh wait, wrong speech.

But I'm still interested to know how I would parse the same info out of a
variable containing "c:\dir1\subdir1\subdir2\my.exe", basically how to trim
the filename off the end.

About the other solutions...

SOLUTION 1:
=================================
$test1 =~ s#.*\\##;    # replace everything
                       # before the last \
                       # with nothing...
=================================
This is the exact opposite of what I wanted to do, if you test the code it
actually ends up with $test1 = "";

SOLUTION 2:
=================================
split(/\\/,$0);
pop @_;
$test1 = join "\\", at _;
=================================
This assumes my path is only one directory deep, not going to work.



-----Original Message-----
From: Skahan, Vince [mailto:Vince.Skahan at pss.boeing.com]
Sent: Tuesday, March 28, 2000 7:19 AM
To: 'spug-list at pm.org'; 'Todd Wells'
Subject: RE: SPUG: regular expression difficulty, plus compiled perl




I'd use dirname() rather than roll my own. Any reason why doing it the 
unix way doesn't suffice ?

The following worked for me on my NT system using ActiveState
perl build 522...

	#!perl
	#
	# see page 328 of the PerlCookbook
	#
	use File::Basename;
	$dir=dirname($0);
	print "I'm called $0\n";
	print "I live in $dir\n";

When I save the script as c:\tmp\foo.pl and run it, it reports back
output that looks like:

	I'm called C:\TMP\foo.pl
	I live in C:\TMP

--
-------- Vince.Skahan at boeing.com ------ http://bcstec.ca.boeing.com/~vds/
-------------
                 Boeing Shared Services Group - Technical Services
                    outside Boeing - http://www.halcyon.com/vince


> ----------
> From: 	Todd Wells[SMTP:toddw at wrq.com]
> Sent: 	Monday, March 27, 2000 8:20 PM
> To: 	'spug-list at pm.org'
> Subject: 	SPUG: regular expression difficulty, plus compiled perl
> 
> I'm using ActiveState Perl on NT4 and trying to set a variable to be equal
> to the directory name that the script was ran in.
> 
> So, I look at $0 which contains the name of the script I ran... in this
case
> "D:\PERL\COUNTP~1.PL"
> 
> But when I try to strip the filename off the end, I can't seem to do it.
> 
> print "First: $0\n";
> ($test1 = $0)=~ m#.*\\#;
> #$test1 =~ s/(.*\\)/$1/;	# I tried this too, and it didn't work
> either.
> print "Second: $test1\n";
> 
> The output:
> First: D:\PERL\COUNTP~1.PL
> Second: D:\PERL\COUNTP~1.PL
> 
> What's going on here?  Is the .* just being _really_ greedy?  I'm
expecting
> $test1 to be "D:\PERL\"  
> I know this is silly, but I can't figure out the problem here.  
> 
> BTW, someone at the last SPUG meeting mentioned they were playing around
> with compiled Perl using ActiveState.  I can't seem to find any specifics
on
> how to do this.  Perlfaq3 mentions it, but gives no specifics on how to
> actually do it, nor can I find any at Malcolm Beattie's site.
> 
> - Todd
> 
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>      POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
>  Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
>  SUBSCRIBE/UNSUBSCRIBE: Replace "action" below by subscribe or unsubscribe
>            Email to majordomo at pm.org: "action" spug-list your_address
> 
> 

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
 Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
 SUBSCRIBE/UNSUBSCRIBE: Replace "action" below by subscribe or unsubscribe
           Email to majordomo at pm.org: "action" spug-list your_address


 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     POST TO: spug-list at pm.org       PROBLEMS: owner-spug-list at pm.org
 Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
 SUBSCRIBE/UNSUBSCRIBE: Replace "action" below by subscribe or unsubscribe
           Email to majordomo at pm.org: "action" spug-list your_address





More information about the spug-list mailing list