/
Util.pm
44 lines (33 loc) · 851 Bytes
/
Util.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package Kurious::Util;
use Mojo::Base -strict;
use Exporter::Lite;
our @EXPORT = qw(crlf2lf rows2kv rows2krows);
sub crlf2lf {
local $_ = shift;
s/\x0D\x0A/\n/go;
tr/\x0D\x0A/\n\n/;
return $_;
}
sub rows2kv {
my ($rows, $key) = @_;
unless ( ref $rows eq 'ARRAY' ) {
Carp::croak('rows is not an ARRAY reference');
}
unless ( exists $rows->[0]{ $key } ) {
Carp::croak(qq{key "$key" is not exists});
}
return +{ map { $_->{ $key } => $_ } @$rows };
}
sub rows2krows {
my ($rows, $key) = @_;
unless ( ref $rows eq 'ARRAY' ) {
Carp::croak('rows is not an ARRAY reference');
}
unless ( exists $rows->[0]{ $key } ) {
Carp::croak(qq{key "$key" is not exists});
}
my %krows;
push @{ $krows{ $_->{ $key } } }, $_ for @$rows;
return \%krows;
}
1;