Re: non numeric data
by derby (Abbot) on Jun 24, 2013 at 12:53 UTC
|
#!/usr/bin/env perl
use strict;
use warnings;
my @array_H = (
'ABCD',
1234,
'1234',
' 1234'
);
foreach my $ele ( @array_H ) {
if( $ele !~ /^[0-9]+$/ ) {
block( $ele );
}
}
sub block {
my $ele = shift;
print "Woot -- $ele --\n";
}
--
Woot -- ABCD --
Woot -- 1234 --
| [reply] [Watch: Dir/Any] [d/l] [select] |
|
if (($array_H[$i] !~ /^[0-9]+$/) &&($array_H[$i] !~ /^-+$/))
I am new to perl so please pardon me for obvious mistakes | [reply] [Watch: Dir/Any] [d/l] |
|
/^[-+]?[0-9]+$/
| [reply] [Watch: Dir/Any] [d/l] |
|
| [reply] [Watch: Dir/Any] [d/l] |
|
Depending on the source of your data, it may have whitespace (especially a newline) at the end.
| [reply] [Watch: Dir/Any] |
Re: non numeric data
by ramlight (Friar) on Jun 24, 2013 at 13:13 UTC
|
| [reply] [Watch: Dir/Any] [d/l] |
Re: non numeric data
by blue_cowdawg (Monsignor) on Jun 24, 2013 at 12:53 UTC
|
but somehow if loop block is visited even if data is numeric
First off you are not doing an apples to apples comparison in your conditional. Secondly you are trying to do pattern matching in a dubious fashion. Check out the following:
$ cat torres09.pl
#!/usr/bin/perl -w
use strict;
while(my $line=<DATA>){
chomp $line;
if ( $line =~ m/^\d+$/){
printf "%s\n",$line;
}
}
exit(0);
__END__
0123
0444
A123
$ perl torres09.pl
0123
0444
Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg
| [reply] [Watch: Dir/Any] [d/l] |
Re: non numeric data
by Happy-the-monk (Canon) on Jun 24, 2013 at 13:37 UTC
|
if ($array_H[$i] =~ m/\D/ )
{
block;
}
where \D matches any one character that isn't 0..9.
Now empty strings and all-0-9-stuff pass, everything else enters the block.
Cheers, Sören
(hooked on the Perl Programming language)
| [reply] [Watch: Dir/Any] [d/l] |
|
| [reply] [Watch: Dir/Any] [d/l] |
|
/\D/ matches 1.1, -4 and 1000000000000000 (depending on your CPU architecture).
Good point, tobyink!
Cheers, Sören
(hooked on the Perl Programming language)
| [reply] [Watch: Dir/Any] |
Re: non numeric data
by hdb (Monsignor) on Jun 24, 2013 at 12:46 UTC
|
| [reply] [Watch: Dir/Any] [d/l] |