in reply to HTML::Restrict works on the command line, but not the web server

Note that one cause for the error might be your addition of ... or die "Error at process: $!". You don't do this in your test script that works from the command line.

To get a better description of the error (if there is an error raised), I would wrap the offending line in an eval {} block:

my $ok = eval { $value = $hr->process($value); 1; }; if( ! $ok ) { die $@; # reraise our error };

If that still leaves an empty value in $value, then maybe the problem is in HTML::Restrict. Maybe you need to pass it some rules as to what is allowed.

Replies are listed 'Best First'.
Re^2: HTML::Restrict works on the command line, but not the web server
by Zimtobi (Initiate) on Apr 28, 2016 at 10:32 UTC

    Thanks for the immediate ansswer!

    I have changed the program like you suggested, but now no error shows up and the $value always comes out empty.

    If no rules are passed, all the HTML is filtered in my test script.

      Then maybe something is wrong with either how HTML::Restrict works or with how you inspect the results.

      Have you made sure that Perl loads the correct versions of HTML::Restrict in both cases?

      print $INC{'HTML/Restrict.pm'}; print HTML::Restrict->VERSION;

      Are you certain that your loop even gets entered? You loop over various (submitted form) values, but maybe they are not even there? Maybe retest with a more minimal test package:

      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) = @_; ## 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); warn "Have [$value] after HTML::Restrict"; } 1;

      Also, how certain are you that your CMS actually has reloaded the modified version of your code? The safest way is to restart the HTTP server, but also consider having a version number in your package that you output into a log file to make certain that the code you're looking at is also the code you are running.