Hello all! I just registered here because I don't find any solution to my PERL problem.

So I want to strip certain tags from HTML in my PERL based Content Management System called Imperia.

I installed HTML::Restrict on the server. It works just fine in a little PERL test program I wrote:

#! /usr/local/bin/perl use strict; use HTML::Restrict; my $value = qq|<html> <head> <title>Dies ist der Titel</title> </head> <body> <p>Hier kommt der Inhalt</p> </body> </html> |; my $hr = HTML::Restrict->new(); my $value = $hr->process($value); print "Ergebnis: ".$value."\n\n";

So now I want to use the module in my CMS. There is an interface called "transform". So I wrote this transform plugin:

#! /bin/false # $Id: Null.pm,v 1.7.2.2 2009/03/26 11:15:04 guido Exp $ # vim: set autoindent shiftwidth=4 tabstop=8: # Imperia AG is the sole owner and producer of its software "Imperia". + For # our software license and copyright information please refer to: Lice +nse.txt # Copyright (C) 1995-2012 Imperia AG. All rights reserved. package Dynamic::Transform::zim_iwe_filtern; use strict; use warnings; use HTML::Restrict; use Carp; sub new { my ($proto, $config) = @_; my $class = ref($proto) || $proto; bless {}, $class; } sub transform { my ($self, $metainfo) = @_; ## fetch all variable names my @keylist = sort $metainfo->keys(); my $count = 0; foreach my $key (@keylist) { ## only change certian variables next unless ( $key =~ m/^eingabe_/ or $key =~ m/^ff_confirm_/ or $key =~ m/^ff_successful_/ or $key =~ m/^map_point/ or $key =~ m/^map_text_/ or $key =~ m/^map_transcript_/ or $key =~ m/^tube_text_/ ); ## test value my $value = qq|<html> <head> <title>Dies ist der Titel</title> </head> <body> <p>Hier kommt der Inhalt</p> </body> </html> |; my $hr = HTML::Restrict->new() or die "Error at HTML::Restrict->ne +w: $!"; $value = $hr->process($value) or die "Error at process: $!"; $metainfo->setValues($key."_DEBUG", $value); } } 1;

But in this environment the command $value = $hr->process($value) won't work. The result on the web interface of the cms is as follows: "Error at process: at /cms/ews-2000/site/modules/core/Dynamic/Transform/zim_iwe_filtern.pm line 55, <DEFAULTDATEI> line 102."

This means that something goes wrong but the error variable $! isn't filled. The httpd error log shows no error either.

I suspect that the module isn't fit to be used inside a package or I just invoke it wrong.

Can anyone help me?

Kind regards,
Tobias from Germany


In reply to HTML::Restrict works on the command line, but not the web server by Zimtobi

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.