Let me get all the fashion pants:
use strict;
use warnings;
use feature qw(say);
my @array;
while ( my $line = <DATA> ) {
chomp $line;
push @array, $line;
}
my @times;
my @distances;
for my $entry ( @array ) {
chomp $entry;
next if $entry =~ /--+$/;
my ( $distance, $time ) = split /\s+/, $entry;
push @times, $time;
push @distances, $distance;
}
say "The first entry as two distinct arrays";
say "Distance: $distances[0]";
say "Time: $times[0]";
my @velocities;
for my $entry ( @array ) {
chomp $entry;
next if $entry =~ /--+$/;
my @velocity = split /\s+/, $entry;
push @velocities, \@velocity;
}
say "The first entry as an array of arrays";
say "Distance: " . $velocities[0]->[0];
say "Time: " . $velocities[0]->[1];
my @velocities2;
for my $entry ( @array ) {
chomp $entry;
next unless $entry =~ /\s*(\S+)\s+(\S+)/;
my %velocity;
$velocity{DISTANCE} = $1;
$velocity{TIME} = $2;
push @velocities2, \%velocity;
}
say "The first entry as an array of hashes";
say "Distance: " . $velocities2[0]->{DISTANCE};
say "Time: " . $velocities2[0]->{TIME};
my @velocities3;
for my $entry ( @array ) {
chomp $entry;
next unless $entry =~ /\s*(\S+)\s+(\S+)/;
my $distance = $1;
my $time = $2;
my $velocity = Local::Velocity->new( $distance, $time );
push @velocities3, $velocity;
}
say "The first entry as an object";
say "Distance: " . $velocities3[0]->distance;
say "Time: " . $velocities3[0]->time;
package Local::Velocity;
sub new {
my $class = shift;
my $distance = shift;
my $time = shift;
my $self = {};
bless $self, $class;
$self->distance( $distance );
$self->time( $time );
return $self;
}
sub distance {
my $self = shift;
my $distance = shift;
if ( defined $distance ) {
$self->{DISTANCE} = $distance;
}
return $self->{DISTANCE};
}
sub time {
my $self = shift;
my $time = shift;
if ( defined $time ) {
$self->{TIME} = $time;
}
return $self->{TIME};
}
package main;
__DATA__
500 3.6673656
----------
1000 3.2707536
----------
1500 3.2356145
----------
2000 3.0495141
----------
2500 3.016674
- , : . , . , . , . push pop , .
, , .
. . . , . push , push . pop , pop . , .
. . , . ? , DISTANCE. , , . , , .., .
- . , , . . Local::Velocity, .
, :
- ,
DISTANCE, DISTANCE DISTANCE, distanse. DISTANCE. , , . - , . ,
velocity, . , , . .
- Perl , , . .