http://www.perlmonks.org?node_id=11133916


in reply to Re^4: how to ignore spaces, commad or new line of an array when comparing
in thread how to ignore spaces, commas or new line of an array when comparing

In that case:

use strict; use warnings; use Test::More tests => 1; my @array1 = ('foo', 'bar'); my @array2 = (" foo\n", ',bar,'); my @clean = map { s/[\s,]//mg; $_ } @array2; is_deeply \@clean, \@array1;

Alter the map to your precise requirements. See also How to ask better questions using Test::More and sample data for future reference.

Addendum: if you don't want or need to keep your "dirty" array you could modify it in-place instead:

use strict; use warnings; use Test::More tests => 1; my @array1 = ('foo', 'bar'); my @array2 = (" foo\n", ',bar,'); s/[\s,]//mg for @array2; is_deeply \@array2, \@array1;

Addendum 2: Note the reply by AnomalousMonk (++) who correctly points out that the map already modifies @array2 and that using /r will prevent that.


🦛

Replies are listed 'Best First'.
Re^6: how to strip spaces, commas or new lines from an array
by AnomalousMonk (Bishop) on Jun 16, 2021 at 14:31 UTC
    ... if you don't want or need to keep your "dirty" array you could modify it in-place ...

    noviceuser:   Note that because map aliases via $_ (on which s/// operates by default), the dirty array is already being modified in place:

    Win8 Strawberry 5.8.9.5 (32) Wed 06/16/2021 10:11:33 C:\@Work\Perl\monks >perl use strict; use warnings; use Test::More tests => 2; 1..2 my @array1 = ('foo', 'bar'); my @array2 = (" foo\n", ',bar,'); my @clean = map { s/[\s,]//mg; $_ } @array2; is_deeply \@clean, \@array1, "new, cleaned array"; is_deeply \@array2, \@array1, "dirty array modified in place"; ^Z ok 1 - new, cleaned array ok 2 - dirty array modified in place
    With Perl version 5.14 and after, one can use the /r modifier with s/// (and tr/// y///) to avoid this modify-in-place behavior when operating on the default $_ alias. See s/// tr/// y/// under Regexp Quote-Like Operators in perlop. (Update: Correction: the tr/// y/// operators are actually discussed in the Quote-Like Operators section of perlop.)


    Give a man a fish:  <%-{-{-{-<