In a message dated 12/11/2002 12:27:41 PM Pacific Standard Time,
[EMAIL PROTECTED] writes:
> > If it's on the front, it won't remove it because it doesn't have a
> preceeding
> > / in that case.
>
> 'm confused...according to your first post:
I apologize for the confusion, that was in response to Frank's suggestion
that didn't have the leading '/' question-marked.
> >$list =~ s|$name||; # remove $name from the list if it's in the list
> >$list =~ s|//|/|; # if $name was in the middle of the list, it would have
> >left behind two /s, remove one
> >$list =~ s|^/||; # if $name was at the front of the list, remove the
> leading /
> >$list =~ s|/$||; # if $name was at the end of the list, remove the trailing
> /
>
> By rule 3 you should have a preceeding / and by rule 4 you should have an
> ending /
> Therefore, your list should always look like:
> /x/y/z/
>
> Is this not the case?
>
>
Here's an example:
$list = "A.Jones/S.Smith/M.Anderson";
$name = "M.Anderson"; # or "A.Jones" or "S.Smith"
With the M.Anderson, it should leave $list as:
"A.Jones/S.Smith"
My first command above would remove the name and leave the list as one of:
"/S.Smith/M.Anderson"
"A.Jones//M.Anderson"
"A.Jones/S.Smith/"
And I needed the three more commands to clean up the list, one for each of
those cases.
Your suggestion of:
$list =~ s|((?!.)/)?\b$name\b/?||;
Works in all cases except for the last name in the list, where it leaves the
/ that was before the last name as a trailing / on list, and requires (like
Frank's $list =~ s|/?$name||;) a second substitution to clean up the / in
that special case.
Hope this clarifys things for you/everyone.
/\/\ark