[ic] problem with new filter

Mike Heins mike at perusion.com
Fri May 7 16:54:31 EDT 2004

Quoting Eros Shop (info at eros-shop.co.uk):
> Hi everyone,
> I'm having a spot of bother whilst trying to write a new [filter] op that's 
> supposed to return anything before and including the first "." (dot) in the 
> string passed to it.
> eg.
> [filter op=sentence]This is sentence one. This is sentence two.[/filter]
> returns:  "This is sentence one."
> Following the working example in the online docs, I've put this in my 
> interchange.cfg and tried to restart IC.
> GlobalSub <<EOR
> sub new_filter {
>     BEGIN {
>         package Vend::Interpolate;
>         $Filter{sentence} = sub {
>                             my $val = shift;
>                             $val =~ m/^*\.//o;
>                             return $val;
>                             };
>     }
> }
> Once the above is added IC refuses to start up giving the following error:

We don't do filters that way any more, at least if this is 5.0.

CodeDef sentence Filter
CodeDef sentence Routine <<EOR
sub {
     my $val = shift;
     $val =~ m/^*\.//o;
     return $val;

Place that in a new directory code/local_function/sentence.filter
and restart IC. No muss, no fuss.

By the way, you don't want /o in your regex or you will potentially
have the wrong results if you call the filter more than once
between IC pages (or over multiple pages in PreFork mode).

And that regex is really no good, either. That is why it isn't
compiling. I am guessing you want:

	$val =~ s/(.*?)\..*/$1/;

Mike Heins
Perusion -- Expert Interchange Consulting    http://www.perusion.com/
phone +1.765.647.1295  tollfree 800-949-1889 <mike at perusion.com>

Friends don't let friends use Outlook. -- Bob Blaylock

More information about the interchange-users mailing list