j'ai vu cette ligne de code dans certaines sourcesblanchissez un membre de hachage béni avec ou sans la suppression
($self->{arg}) = ((delete $self->{arg}) =~ /(.*)/s) if ${^TAINT};
Je comprends la blanchissez. J'ai aussi connu delete
Ma question est, dans quelles circonstances est-il nécessaire ou préférable d'utiliser le delete
, et ne l'est pas assez pour utiliser le plus simple
($self->{arg}) = (($self->{arg}) =~ /(.*)/s) if ${^TAINT};
Par exemple
#!/usr/bin/env perl -T
use 5.014;
use warnings;
package Some {
use Moose;
has 'arg' => (is => 'rw', isa => 'Str');
sub doit {
my $self = shift;
#($self->{arg}) = ((delete $self->{arg}) =~ /(.*)/s) if ${^TAINT};
($self->{arg}) = (($self->{arg}) =~ /(.*)/s) if ${^TAINT};
}
};
my $some = Some->new(arg => 'some text');
$some->doit();
say $some->arg;
Je suis d'accord avec vous. Modifier la valeur de hachage en place (ou, dans ce cas, la laisser inchangée) semble équivaloir à la supprimer et à la réinsérer. Pouvez-vous dire où vous avez vu cette pratique? – Borodin
@Borodin Je l'ai vu https://metacpan.org/source/JSWARTZ/Mason-2.24/lib/Mason/Compilation.pm#L105 – Nemo
Cela peut faire la différence dans le cas de tie() s, mais je ne vois rien ici . Dunno. Je ne penserais jamais à faire ça. –