On Jul 17, Faymon, Kurt said:

>We are currently moving from Omnimark to PERL so I guess it's time to learn
>some PERL. Giving the following scenario, I am wondering if PERL can cope
>with the following scenario and, if so, what would the code look like:

Oh wow.  I'm truly astonished.  Omnimark, which touted itself as the
replacement for Perl.  Wow.  Gasp.  (Perl, not PERL, please.)

Someone who actually used Omnimark.  I need a minute to recover.
(Omnimark, which is not open-source, debuted itself at OSCON, and said it
was "cheaper than Perl".  This is a product I have laughed at for quite a
while.)

><p>And it says in Documents 1,2,3 and 4 where to go</p>

><p>And it says in Documents <A HREF="Doc1">1</A>,<A HREF="Doc2">2</A>,<A
>HREF="Doc3>3</A> and <A HREF="Doc4>4</A> where to go</p>

>Basically, I need it to find a pattern anchored by word "Documents" followed
>by an undetermined number of #'s, some separated by commas and/or the word
>'and'

>Is this possible in PERL? Are there any better languages for predominantly
>text transformation?

I find Perl very VERY good for text transformation.  Others might use sed
or awk, but Perl has more power.  (More power, ar ar ar!)

This is how I would approach the problem.  It works on the following
cases:

  "Check Document 1"
  "Check Documents 1 and 2"
  "Check Documents 1, 2, and 3"
  "Check Documents 1,2 and 3"
  "Check Documents 1 , 2, 3, 4, and 5"

Here's the code:

  $string =~ s{(Documents?) (\d+(?:\s*,\s*\d+)*(?:\s*,?\s*and\s+\d+)?)}
              { $1 . " " . make_links($2) }ge;

  # find a number, make it a link
  sub make_links {
    my $str = shift;
    $str =~ s{(\d+)}{<a href="Doc$1">$1</a>}g;
    return $str;
  }

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


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

Reply via email to