File: MLTests.pm

package info (click to toggle)
libmixin-linewise-perl 0.111-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 192 kB
  • sloc: perl: 303; makefile: 2
file content (63 lines) | stat: -rw-r--r-- 1,082 bytes parent folder | download | duplicates (4)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
use strict;

package MLTests;
use Mixin::Linewise::Readers
  -readers,
  -readers => { -suffix => '_sub', method => 'read_handle_sub' },
  -readers => { -suffix => '_mul', method => 'read_handle_mul' },
  -readers => { -suffix => '_utf8', method => 'read_handle_val' },
  -readers => { -suffix => '_raw', method => 'read_handle_val', binmode => ':raw' };

sub read_handle {
  my ($self, $fh) = @_;

  my %return;
  while (<$fh>) {
    chomp;
    my ($k, $v) = split /\s*=\s*/;
    ($return{$k} ||= 0) += $v;
  };

  return \%return;
}

sub read_handle_sub {
  my ($self, $fh) = @_;

  my %return;
  while (<$fh>) {
    chomp;
    my ($k, $v) = split /\s*=\s*/;
    ($return{$k} ||= 0) -= $v;
  };

  return \%return;
}

sub read_handle_mul {
  my ($self, $fh) = @_;

  my %return;
  while (<$fh>) {
    chomp;
    my ($k, $v) = split /\s*=\s*/;
    ($return{$k} ||= 1) *= $v;
  };

  return \%return;
}

sub read_handle_val {
  my ($self, $fh) = @_;

  my %return;
  while (<$fh>) {
    chomp;
    my ($k, $v) = split /\s*=\s*/;
    $return{$k} = $v;
  };

  return \%return;
}

1;