Hello Chas,
I know I am missing something basic, but tell me in your second example
why isn't the /1_0001.doc being printed as well?
Regards,
Jaimee
-----Original Message-----
From: Chas Owens [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, May 01, 2002 4:37 PM
To: garrett esperum
Cc: [EMAIL PROTECTED]
Subject: Re: string manipulation
On Wed, 2002-05-01 at 18:52, garrett esperum wrote:
> Hi all,
>
> I am using Solaris, Perl 5.
>
> I am having some problems manipulating strings.
>
> The string I am manipulating is:
>
> /export/home/user/www/doc-root/dir/projects/19463/1_0001.doc
>
> I am trying to take out the "19463" part from the string and insert it
into
> a variable.
>
> Example of my code to do this:
>
> $projectId = substr($projectDocDir, length($dir), index($projectDocDir,
"/",
> length($dir)));
>
> The $dir variable contains the path
> "/export/home/user/www/doc-root/dir/projects".
>
> When I run my script, the string "1946" is returned, the last "3" is not.
> What am I doing wrong??
>
> Thanks you for your help!!
>
> -garrett
Hows about using a xeger (backwards regex)?
<example>
#!/usr/bin/perl -w
use strict;
my $filename =
"/export/home/user/www/doc-root/dir/projects/19463/1_0001.doc";
my $projectid;
$projectid = reverse $1 if (reverse $filename) =~ m#^.*?/(.*?)/#;
print "$projectid\n";
</example>
Or maybe a normal regex using the 'projects' bit of the string
<example>
#!/usr/bin/perl -w
use strict;
my $filename =
"/export/home/user/www/doc-root/dir/projects/19463/1_0001.doc";
my $projectid;
$projectid = $1 if $filename =~ m#/projects/(.*?)/#;
print "$projectid\n";
</example>
or maybe use split like this:
<example>
#!/usr/bin/perl -w
use strict;
my $filename =
"/export/home/user/www/doc-root/dir/projects/19463/1_0001.doc";
my $projectid = (split '/', $filename)[-2];
print "$projectid\n";
</example>
--
Today is Sweetmorn the 48th day of Discord in the YOLD 3168
P'tang!
Missile Address: 33:48:3.521N 84:23:34.786W
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]