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.
In reply to Re^2: Print the line with the largest number from standard input
by TieUpYourCamel
in thread Print the line with the largest number from standard input
by SSSufe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |