File: layers.pl

package info (click to toggle)
libfile-slurper-perl 0.014-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 156 kB
  • sloc: perl: 354; makefile: 2
file content (92 lines) | stat: -rw-r--r-- 4,097 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#! /usr/bin/env perl

use 5.010;
use strict;
use warnings;

use Benchmark 'cmpthese', ':hireswallclock';

sub read_text {
	my ($filename, $layers) = @_;
	open my $fh, "<$layers", $filename or die "Can't open $filename:#!";
	my $foo = do { local $/; <$fh> };
	return;
}

sub read_lines {
	my ($filename, $layers) = @_;
	open my $fh, "<$layers", $filename or die "Can't open $filename:#!";
	my @foo = <$fh>;
	return;
}

my $filename = shift // 'test.txt';
my $count = shift // 200;
my $encoding = shift // 'utf-8';

say "Read utf8 encoded Unix text file, decode with :encoding\n";
cmpthese($count, {
	':encoding'        => sub { read_text($filename, ':encoding(utf-8-strict)') },
	':encoding:perlio' => sub { read_text($filename, ':encoding(utf-8-strict):perlio') },
});

say "\nRead utf8 encoded Unix text file into lines, decode with :encoding\n";
cmpthese($count, {
	':encoding'        => sub { read_lines($filename, ':encoding(utf-8-strict)') },
	':encoding:perlio' => sub { read_lines($filename, ':encoding(utf-8-strict):perlio') },
});

say "Read utf8 encoded Windows text file, decode with :encoding\n";
cmpthese($count, {
	'c:e'       => sub { read_text($filename, ":crlf:encoding(utf-8-strict)") },
	'c:p:e'     => sub { read_text($filename, ":crlf:perlio:encoding(utf-8-strict)") },
	'u:c:e'     => sub { read_text($filename, ":unix:crlf:encoding(utf-8-strict)") },
	'u:c:p:e'   => sub { read_text($filename, ":unix:crlf:perlio:encoding(utf-8-strict)") },
	'u:c:e:p'   => sub { read_text($filename, ":unix:crlf:encoding(utf-8-strict):perlio") },
	'u:c:p:e:p' => sub { read_text($filename, ":unix:crlf:perlio:encoding(utf-8-strict):perlio") },
	'c:p:e:p'   => sub { read_text($filename, ":crlf:perlio:encoding(utf-8-strict):perlio") },
	'e:c'       => sub { read_text($filename, ":raw:encoding(utf-8-strict):crlf") },
	'e:c:p'     => sub { read_text($filename, ":raw:encoding(utf-8-strict):crlf:perlio") },
	'e:p:c:p'   => sub { read_text($filename, ":raw:encoding(utf-8-strict):perlio:crlf:perlio") },
});


say "\nRead utf8 encoded text file, decode with :utf8_strict\n";
cmpthese($count * 10, {
	':utf8_strict'             => sub { read_text($filename, ":utf8_strict") },
	':unix:utf8_strict'        => sub { read_text($filename, ":unix:utf8_strict") },
	':unix:utf8_strict:perlio' => sub { read_text($filename, ":unix:utf8_strict:perlio") },
});

say "\nRead utf8 encoded text file with optional crlf line endings, decode with :utf8_strict\n";
cmpthese($count * 10, {
	':crlf:utf8_strict'        => sub { read_text($filename, ":crlf:utf8_strict") },
	':utf8_strict:crlf'        => sub { read_text($filename, ":utf8_strict:crlf") },
	':utf8_strict:crlf:perlio' => sub { read_text($filename, ":utf8_strict:crlf:perlio") },
	':utf8_strict:perlio'      => sub { read_text($filename, ":utf8_strict:perlio") },
	':utf8_strict'             => sub { read_text($filename, ":utf8_strict") },
});

say "\nRead lines of utf8 encoded text file with optional crlf line endings, decode with :utf8_strict\n";
cmpthese($count * 10, {
	':crlf:utf8_strict'        => sub { read_lines($filename, ":crlf:utf8_strict") },
	':utf8_strict:crlf'        => sub { read_lines($filename, ":utf8_strict:crlf") },
	':utf8_strict:crlf:perlio' => sub { read_lines($filename, ":utf8_strict:crlf:perlio") },
	':utf8_strict:perlio'      => sub { read_lines($filename, ":utf8_strict:perlio") },
	':utf8_strict'             => sub { read_lines($filename, ":utf8_strict") },
});

say "\nRead text file doing crlf translation\n";
cmpthese($count * 10, {
	':unix:crlf'        => sub { read_text($filename, ":unix:crlf") },
	':unix:crlf:perlio' => sub { read_text($filename, ":unix:crlf:perlio") },
#	':unix'             => sub { read_text($filename, ":unix") },
#	':raw'              => sub { read_text($filename, ":raw") },
});

say "\nRead text file into lines doing crlf translation\n";
cmpthese($count * 10, {
	':unix:crlf'        => sub { read_lines($filename, ":unix:crlf") },
	':unix:crlf:perlio' => sub { read_lines($filename, ":unix:crlf:perlio") },
#	':raw'              => sub { read_lines($filename, ":raw") },
});