#! /usr/bin/env perl
use common::sense;
use YAML 'Dump';
my %results;
sub bad {
my @data;
while (<DATA>) {
chomp;
@data = split /\|/, $_, 2;
$results{bad}{$data[0]} = \@data;
}
}
sub good {
while (<DATA>) {
chomp;
my @data = split /\|/, $_, 2;
$results{good}{$data[0]} = \@data;
}
}
sub good_also {
while (<DATA>) {
chomp;
/^([^|]+)/; # pretend we're getting the key some other way
$results{good_also}{$1} = [split /[|]/, $_, 2]
}
}
my $data_pos = tell DATA;
bad;
seek DATA, $data_pos, 0; good;
seek DATA, $data_pos, 0; good_also;
print Dump(\%results);
say "bad purchase: ", join '|', @{$results{bad}{purchase}};
say "bad location: ", join '|', @{$results{bad}{location}};
say "bad when: ", join '|', @{$results{bad}{when}};
__DATA__
purchase|apples
location|Fiesta
when|today
输出:
---
bad:
location: &1
- when
- today
purchase: *1
when: *1
good:
location:
- location
- Fiesta
purchase:
- purchase
- apples
when:
- when
- today
good_also:
location:
- location
- Fiesta
purchase:
- purchase
- apples
when:
- when
- today
bad purchase: when|today
bad location: when|today
bad when: when|today