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

SSSufe says they need the line with the largest number, not the longest line, so to expand on 1nickt's solution:
#/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
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.

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
    ... captured groupings from a regex can be put in an array.

    And they don't even have to be captured. Try
        @numbers = $line =~ /\d+/g;


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

Re^3: Print the line with the largest number from standard input
by 1nickt (Canon) on Jul 22, 2019 at 13:32 UTC

    Oh, hahah, I guess I did a really really bad job of reading the OP. Well I hope the comment was helpful, this seems far more so!


    The way forward always starts with a minimal test.