aboutsummaryrefslogtreecommitdiff
path: root/challenge-110/perlboy1967/perl/ch-2.pl
blob: 656d263fc408e0634ee97cb9aec41aef4b5b9a50 (plain)
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
#!/usr/bin/perl

# Perl Weekly Challenge - 110
# - https://perlweeklychallenge.org/blog/perl-weekly-challenge-110/#TASK2
#
# Task 2 - Transpose File
#
# Author: Niels 'PerlBoy' van Dijke

use v5.16;
use strict;
use warnings;

use File::Basename qw(dirname);
use File::Slurp;

use Test::More;
use Test::Deep;

# Prototype(s)
sub transposeFile($);

# Work relative from script directory
chdir(dirname($0));

cmp_deeply ([transposeFile('input2.txt')],
            ['name,Mohammad,Joe,Julie,Cristina',
             'age,45,20,35,10',
             'sex,m,m,f,f']);

done_testing;


sub transposeFile($) {
  my ($f) = @_;

  # Read and trim
  my @lines = map { s/^\s*(.*?)\s*$/$1/; $_ } read_file($f);

  my @out;
  map {
    my $i = 0;
    map { push(@{$out[$i++]},$_) } split(/,/, $_);
  } @lines;

  return map {join(',',@$_)} @out;
}