Leser: 19
1
2
3
my @pages = map { $_->{class} ne 'DT' ? 1 :
( defined($_->{mid}) && grep ( /\w+/ , @{$_->{texts}} ) ? 1 : 0)
} @{$self->session->{caledit}->{pages}};
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
'pages' => [
{
'mid' => '164',
'texts' => [
undef,
'FGFDBB'
],
'class' => 'DT'
},
{
'mid' => '159',
'texts' => [
undef,
'arfara'
],
'class' => 'DT'
},
{
'mid' => '154',
'texts' => [],
'class' => 'DT'
},
{
'mid' => '153',
'texts' => [
undef,
'',
'GAGRE',
'',
''
],
'class' => 'DT'
},
{
'mid' => undef,
'texts' => [],
'class' => 'DT'
..
1
2
3
Use of uninitialized value $_ in pattern match (m//) at D:\temp\t.pl line 48.
Use of uninitialized value $_ in pattern match (m//) at D:\temp\t.pl line 48.
Use of uninitialized value $_ in pattern match (m//) at D:\temp\t.pl line 48.
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
#! /usr/bin/perl use strict; use warnings; my @pages = ( { 'mid' => '164', 'texts' => [ undef, 'FGFDBB' ], 'class' => 'DT' }, { 'mid' => '159', 'texts' => [ undef, 'arfara' ], 'class' => 'DT' }, { 'mid' => '154', 'texts' => [], 'class' => 'DT' }, { 'mid' => '153', 'texts' => [ undef, '', 'GAGRE', '', '' ], 'class' => 'DT' }, { 'mid' => undef, 'texts' => [], 'class' => 'DT' }, ); my @checked = map { $_->{class} ne 'DT' ? 1 : ( defined($_->{mid}) && grep ( /\w+/ , @{$_->{texts}} ) ? 1 : 0 ) } @pages;
2010-11-03T16:00:09 LinuxerHi,
ist die Zeile 134 mit der von Dir gezeigten "Source" identisch?
Quote
Die Warnungen werd ich los, indem ich ||() hinter @{$_->{texts}}) einfüge.
Kannst Du ein Minimalskript erstellen, mit dem Deine Meldung reproduziert werden kann?
2010-11-03T15:49:03 Rolf_PlusWHallo,
in meiner Anwendung tritt von Zeit zu Zeit ein Fehler auf, den ich nicht lokalisieren kann.
Die Source ist :
Code: (dl )1
2
3my @pages = map { $_->{class} ne 'DT' ? 1 :
( defined($_->{mid}) && grep ( /\w+/ , @{$_->{texts}} ) ? 1 : 0)
} @{$self->session->{caledit}->{pages}};
...
Ich vermute mal er hat ein Problem mit $_ in dem geschachtelten map { grep} Konstrukt , wobei ich ja nicht grep {} @arr sondern grep ( patt, @arr) verwende, da tritt ja $_ eigentl. nicht in Erscheinung.
Wer hat ne Idee, was da falsch ist ?
Rolf
1 2 3
my @pages = map { $_->{class} ne 'DT' ? 1 : ( defined($_->{mid}) && grep ( /\w+/ ) @{$_->{texts}} ? 1 : 0) } @{$self->session->{caledit}->{pages}};
1 2 3 4 5 6 7 8
my @pages = (); for my $page (@{$self->session->{caledit}->{pages}}) { push(@pages,1); next if($page->{class} ne 'DT'); next if(defined($page->{mid}) && grep{defined($_) && /\w+/}@{$page->{texts}} ); $pages[-1]=0; }
2010-11-03T16:16:32 topegEin solche Prüfung in eine Zeile zu quetschen mag zwar "perlig" sein aber nicht besonders lesbar und schneller ist es auch nicht. Das Problem ist, dass du due globale variable $_ für verschiedenen Zwecke benutzt, zudem an einer Stelle wo sie "magisch" und darum gesichert ist
2010-11-03T16:43:08 Rolf_PlusWUnd: Der Code läuft ja in >99% der Fälle ohne dass eine Fehlermeldung kommt, er ist ja nicht prinzipiell falsch, sondern - meine Vermutung - es gibt Fälle, in den in dem geparsten Array etwas nicht stimmt, was dann zu dem Fehler führt. Nur ich habe keine Idee, was da schief geht, d.h ich habe auch keinen Testfall, der diesen Fehler erzeugt !
1 2 3 4 5
my @checked = map { print ref($_) ? Dumper($_) : $_ ; $_->{class} ne 'DT' ? 1 : ( defined($_->{mid}) && grep ( /\w+/ , @{$_->{texts}}||() ) ? 1 : 0 ) } @pages;
2010-11-03T15:49:03 Rolf_PlusW... , wobei ich ja nicht grep {} @arr sondern grep ( patt, @arr) verwende, da tritt ja $_ eigentl. nicht in Erscheinung.