in reply to Input data problem

Use split:

19:20 >perl -MData::Dump -we "my $line = qq[1 10 8 6\n]; chomp $line; +my @data = split / /, $line; dd \@data;" [1, 10, 8, 6] 19:20 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Input data problem
by Anonymous Monk on Jan 14, 2014 at 10:07 UTC
    I am not quite sure i understand your solution. Is there an easier way? Something like: @data = <STDIN>; #or it may be not an array Then somehow the data from array is shifted into separate variable values? Is there any way to do it? I've
      Input is separated by $/, which is a newline "\n" by default. You can set it to something else, but using split is more common:
      my (@data) = split ' ', <>; # ' ' means split on any whitespace.
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
        Great, thanks a lot. that helped. One more thing for this:
        my $data = <STDIN>; my (@data) = split (" ", $data); my $n = shift (@data); my $m = shift (@data); my $a = shift (@data); my $ma = $m/$a; my $na = $n/$a; if (int($ma) != $ma) { $ma = int($ma) +1; } if (int($na) != $na) { $na = int($na) +1; } $x = int($ma*$na); print $x;

        #This script solves the problem of counting the amount of a*a sized block to cover the surface area of the city square, sized n*m.

        When i check n = 1000000000, m = 1000000000, a = 1 i get a result x = 1e+18 instead of 1000000000000000000, despite the fact that i use int operator. could anyone help with printing the exact number?

        thanks in advance, the rest cases pass ok.

      # read one line of input my $line = <STDIN>; # remove the line ending chomp $line; # then either my ($foo, $bar, $baz, $quux) = split(/ +/, $line); # or my (@data) = split(/ +/, $line); # the latter is better if you don't know how many elements you'll get