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
use warnings;
use strict;
use Encode qw(encode decode);
use Cwd;
my $enc = 'UTF-16';
my $dir0 = getcwd;
my $file = "x.xml";
open INPUT, "<:encoding($enc)", "$dir0/$file" or die "File $file not found!";
open OUTPUT, ">$dir0/first100_$file" or die "File first100_$file not found!";
open STDERR, ">results_error.log" or die "Can't open log";
my $i = 0;
while (<INPUT>) {
if ( $i < 100 ) {
print OUTPUT $_; # (1)
# print OUTPUT decode($enc,$_); # (2)
# print OUTPUT encode($enc,$_); # (3)
$i++;
}
}
close INPUT;
close OUTPUT;
close STDERR;
2013-12-04T21:17:54 giordanoOffenbar ist die Schreibweise UTF-16 und nicht utf-16. Werde das ändern und bescheid sagen (erst Montags).
QuoteMit "<:encoding(UTF-16)" sagst du perl: Hey perl die datei ist UTF-16 Wandle das in das perlinterne Format.
Perl benutzt intern eine Abart von UTF-8.
Das selbe kannst du auch bei der Ausgabe machen ">:encoding(UTF-16)". Damit sagts du perl: Hey wandle die perlkodierten Daten in UTF-16 und schreibe sie in die Datei.
1
2
3
4
5
6
7
open INPUT, "<:encoding($enc)", "$dir0/$file" or die "File $file not found!";
open OUTPUT, ">:encoding($enc)", "$dir0/first100_$file" or die "File $file not found!";
while (<INPUT>) {
my $row_str2 = substr($_,0,500);
print OUTPUT $row_str2;
}