Имам функция за конвертиране на документи в различни формати, която след това извиква друга функция въз основа на типа документ. Това е доста ясно за всичко, освен HTML документите, които изискват малко почистване, и това почистване е различно в зависимост от това откъде идва. Така че имах идеята, че мога да предам препратка към подпрограма към функцията за конвертиране, така че повикващият да има възможност да модифицира HTML, нещо подобно (не съм на работа, така че това не е копирано и поставено) :
package Converter;
...
sub convert
{
my ($self, $filename, $coderef) = @_;
if ($filename =~ /html?$/i) {
$self->_convert_html($filename, $coderef);
}
}
sub _convert_html
{
my ($self, $filename, $coderef) = @_;
my $html = $self->slurp($filename);
$coderef->(\$html); #this modifies the html
$self->save_to_file($filename, $html);
}
който след това се извиква от:
Converter->new->convert("./whatever.html", sub { s/<html>/<xml>/i });
Опитах няколко различни неща в този смисъл, но продължавам да получавам „Използване на неинициализирана стойност при заместване (s///)“. Има ли някакъв начин да направя това, което се опитвам да направя?
Благодаря