Esto es lo que me gustaría lograr:¿Cómo podría redefinir una subrutina y conservar también la anterior?
sub first {
print "this is original first";
}
*original_first = \&first;
sub first {
print "this is first redefined";
}
original_first(); # i expect this to print "this is original first"
first() # i expect this to print "this is first redefined"
pensé que guardando el símbolo de first
, me gustaría ser capaz de llamar a la subrutina tarde originales (bajo el nombre original_first
) y también poder para llamar al first
, y obtener el redefinido. Sin embargo, si llamo al original_first
, sigo teniendo el mensaje "esto primero se redefine". ¿Qué tengo que hacer para que esto funcione?
¿Es posible, cuando redefine el símbolo 'first', afectar solo a la parte del código? – Geo
una asignación de un coderef (generado por sub {...}) a un typeglob solo reemplazará la entrada CODE en el glob. cualquier otro tipo de datos en el globo no cambiará –
También puede usar 'local * first = sub {...};' para reemplazar la función dentro de un bloque específico solamente. –