On Aug 14, 2012, at 2:57 PM, Paul Anderson wrote: > I'm working on code to solder the Project Euler problem #8. This is the one > where you have to find the greatest product of any five digits found in order > in a one thousand digit number. It sort of worked briefly. This version > worked(I had line 25 uncommented): >
> Use of uninitialized value in subtraction (-) at ./euler8.pl line 24 (#1) > > I've copied and pasted the code below, for those who don't want to trek over > to github: > > #!/usr/bin/myperl -w > # euler8.pl --- Euler Problem 8 > # Author: Paul Anderson <wackyvorlon@paul-andersons-macbook-pro-3.local> > # Created: 14 Aug 2012 > # Version: 0.01 > > use warnings; > use diagnostics; > use 5.16.0; > > #use strict; > no strict; > > > # The number. > > $numb="7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"; > > $result=0; > > > for ($numb=~/(\d)(\d)(\d)(\d)(\d)/gi) { > $cur = $1*$2*$3*$4*$5; # Put the product in a variable. > pos $numb=(pos $numb) - 4; # Reset position where > matching will begin. > # pos $num defaults to the > position just > # after the *last* character in > our match. > # We want our second match to > begin after > # the *first* character. > if ( $cur > $result) { > $result=$cur; > > } > > } > > print "\nGreatest value is $result.\n"; > > > As it stands, I'm baffled. Any thoughts on what's wrong? Have you tried printing out the values of ($1,$2,$3,$4,$5), $cur, and pos $numb for each iteration? I think you will find it most informative to do so. Hint: you should be using a while loop instead of a for loop. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/