1 2 3 4 5 6 7 8 9 10
#!/usr/bin/perl use strict; use warnings; use 5.010; use Fcntl; sysopen(my $fh,'test.txt',O_RDWR|O_CREAT) or die $!; foreach my $in (split(/,/,readline(scalar($fh)))) { say "lesen"; }
Quotezutage.Use of uninitialized value in split at ...
2016-10-23T08:36:21 GwenDragonWas Bianca machte ist schon logisch, nur nicht robust genug.
Wie löst du das dann einfach in zwei Zeilen, wenn die Voraussetzung ist: Datei lesen oder Datei erzeugen wenn nicht existent.
Bitte dein Beispiel.
1 2
read( $fh, my $bin, 4 ); my $c = unpack( 'N', $bin) || return wantarray ? () : [];
foreach my $in ( split( /,/, readline( scalar($fh) ) // "" ) ) {
2016-10-24T09:33:34 MuffiIch kann mir kaum vorstellen, dass der Umgang mit Variablen an der Stelle empfindlicher wurde.
Ein split auf undef hat bestimmt vorher schon eine Warnung gegeben
2016-10-24T10:01:35 LinuxerIch finde die Reihenfolge der Kommandos etwas seltsam.
readline(scalar($fh)) - Was soll das bringen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; local $Data::Dumper::Purity; $Data::Dumper::Purity = 1; local $Data::Dumper::Useqq; $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys; $Data::Dumper::Sortkeys = sub { my ($hash) = @_; return [(sort {lc $a cmp lc $b} keys %$hash)]; }; use 5.010; use Fcntl; sysopen(my $fh,'test.txt',O_RDWR|O_CREAT) or die $!; say "scalar: ".scalar($fh); say "readline: ".readline(0); foreach my $in (split(/,/,readline(scalar($fh)))) { say "lesen"; }
Quotescalar: GLOB(0x55c200)
readline() on unopened filehandle 0 at test.pl line 20.
readline:
Quotereadline() on unopened filehandle 0 at test.pl line 20.
Use of uninitialized value in concatenation (.) or string at test.pl line 20.
Use of uninitialized value in split at test.pl line 21.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ perl -E 'say for localtime'
9
33
11
25
9
116
2
298
1
$ perl -E 'say for localtime(scalar time)'
10
52
11
25
9
116
2
298
1
$ perl -E 'say for scalar localtime'
Tue Oct 25 11:33:14 2016
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#! /usr/bin/perl use strict; use warnings; use 5.010; sub foo { if ( wantarray ) { warn "list context\n"; return ( 1,2 ); } else { warn "scalar context\n"; return "1,2"; } } say "with join:"; say join " ", foo(); say "with split:"; say for split m/,/, foo();