in reply to Re: Print the line with the largest number from standard input
in thread Print the line with the largest number from standard input
The code works with your sample data, but consider the following: If two or more lines contain the same highest number, it will output only the first one. If a line contains a negative number, it will be treated as a positive one (the "-" will be ignored). Only integers are considered. Numbers written with scientific notation, for example, will not be treated correctly (4 x 105 would be considered less than 40) and decimals would be truncated and the remaining digits treated as a new number.#/usr/bin/perl use strict; use warnings; use feature 'say'; my $lineWithMax; my $max = 0; my @numbers; my @lines = <DATA>; for my $line (@lines) { chomp($line); @numbers = $line =~ /(\d+)/g; foreach my $number (@numbers) { if ( $number > $max ) { $lineWithMax = $line; $max = $number; } } } say "Line with highest number is '$lineWithMax'"; __DATA__ Hello, i'm 18 1 this year is 2019 1 1 2 3 - 4
Today I learned that captured groupings from a regex can be put in an array.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Print the line with the largest number from standard input
by AnomalousMonk (Archbishop) on Jul 22, 2019 at 13:33 UTC | |
|
Re^3: Print the line with the largest number from standard input
by 1nickt (Canon) on Jul 22, 2019 at 13:32 UTC |