ドキュメントをさまざまな形式に変換する関数があり、ドキュメントの種類に基づいて別の関数を呼び出します。少しのクリーンアップが必要な HTML ドキュメントを除けば、それはすべて非常に簡単です。クリーンアップは、それがどこから来たのかによって異なります。そこで、サブルーチンへの参照を convert 関数に渡して、呼び出し元が 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///)」が引き続き発生します。私がやろうとしていることをする方法はありますか?
ありがとう