我了解处理程序只是在发生某些事件时调用的子例程。但是我对这些事件如何调用我的代码中的方法的实现细节感到困惑。
例如,该模块的基本实现始于以下内容:
my $diff = XML::SemanticDiff->new(keepdata=> 1, keeplinenums => 1, diffhandler => 1);
my @changes = $diff->compare($file1, $file2);
我知道我的自定义处理程序大致会是这样的:
sub element_value($self, $element, $to_element_properties, $fromdoc_element_properties) {
my ($self, @args) = @_;
}
但是是否需要介入代码来实际调用这个子程序?例如:
foreach my $change (@changes) {
$change->element_value(some_arguements_here);
}
当执行
$diff->compare($file1, $file2);
时,处理程序自动调用吗?任何指针将不胜感激。