[libtest-bdd-cucumber-perl] 02/05: Removing $_ modifications in list functions
Intrigeri
intrigeri at moszumanska.debian.org
Thu Jun 19 10:18:43 UTC 2014
This is an automated email from the git hooks/post-receive script.
intrigeri pushed a commit to annotated tag 0.22
in repository libtest-bdd-cucumber-perl.
commit 2391a6d9a22b4d1f6dfc8754b6fc92833c3b81e9
Author: Paul Cochrane <paul at liekut.de>
Date: Wed Jun 4 12:02:55 2014 +0200
Removing $_ modifications in list functions
According to PBP, modifying $_ within map, grep or first is *really* not a
good idea, since $_ gets aliased within the list function, thus unexpected
things can occur. One recommendation in PBP is to simply modify a copy of
each list element and thus avoid the problem (this is the solution presented
in this commit). Alternatively, one could rewrite the map/grep/first as a
for loop, thus making the side-effects more explicit. Here is how that
would look in _build_transformed_matches():
my @newly_transformed_matches;
for my $match ( @transformed_matches ) {
push @newly_transformed_matches, $self->transform( $match );
}
@transformed_matches = @newly_transformed_matches;
This does the same thing (i.e. the tests pass, and Devel::Cover tells me
that the code is exercised by the tests) and may be more
readable/maintainable depending upon one's point of view.
---
lib/Test/BDD/Cucumber/Parser.pm | 2 +-
lib/Test/BDD/Cucumber/StepContext.pm | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/Test/BDD/Cucumber/Parser.pm b/lib/Test/BDD/Cucumber/Parser.pm
index d05d52c..e8249a5 100644
--- a/lib/Test/BDD/Cucumber/Parser.pm
+++ b/lib/Test/BDD/Cucumber/Parser.pm
@@ -327,7 +327,7 @@ sub _pipe_array {
my ( $self, $string ) = @_;
my @atoms = split(/\|/, $string);
shift( @atoms );
- return map { $_ =~ s/^\s+//; $_ =~ s/\s+$//; $_ } @atoms;
+ return map { my $atom = $_; $atom =~ s/^\s+//; $atom =~ s/\s+$//; $atom } @atoms;
}
1;
diff --git a/lib/Test/BDD/Cucumber/StepContext.pm b/lib/Test/BDD/Cucumber/StepContext.pm
index 4fe75e3..45e9fb3 100644
--- a/lib/Test/BDD/Cucumber/StepContext.pm
+++ b/lib/Test/BDD/Cucumber/StepContext.pm
@@ -244,7 +244,10 @@ sub _build_transformed_matches
if ( $self->verb ne 'transform'
and $self->has_transformers )
{
- @transformed_matches = map { $_ = $self->transform( $_ ) } @transformed_matches;
+ @transformed_matches = map {
+ my $match = $_;
+ $match = $self->transform( $match );
+ } @transformed_matches;
}
return \@transformed_matches;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libtest-bdd-cucumber-perl.git
More information about the Pkg-perl-cvs-commits
mailing list