in reply to Filtering array of strings and numbers
Hello nysus,
Since you’re testing for equality only, the straightforward solution is to stringify both terms in the comparison, thereby guaranteeing that you always compare a string with a string:
#! perl use strict; use warnings; use Data::Dump; my $string_or_number = 123; my @strings_or_numbers = ('abc', 123, 'ab4', 456); my @filtered = grep { "$string_or_number" ne "$_" } @strings_or_numbe +rs; dd \@filtered;
Output:
1:37 >perl 1612_SoPW.pl ["abc", "ab4", 456] 1:37 >
Of course, this assumes that neither $string_or_number nor any of the elements of @strings_or_numbers are ever undef.
Update: As AnomalousMonk and Laurent_R have pointed out below, the stringwise equality operators eq and ne implicity stringify their operands, so grep { "$string_or_number" ne "$_" } can be simplified to grep { $string_or_number ne $_ }.
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Filtering array of strings and numbers
by stevieb (Canon) on Apr 29, 2016 at 15:46 UTC | |
|
Re^2: Filtering array of strings and numbers
by AnomalousMonk (Archbishop) on Apr 29, 2016 at 16:32 UTC | |
by Laurent_R (Canon) on Apr 29, 2016 at 17:01 UTC | |
by AnomalousMonk (Archbishop) on Apr 29, 2016 at 18:26 UTC | |
|
Re^2: Filtering array of strings and numbers
by syphilis (Archbishop) on Apr 30, 2016 at 01:49 UTC | |
|
Re^2: Filtering array of strings and numbers
by msh210 (Monk) on May 02, 2016 at 17:36 UTC |