Thread Finde den Fehler nicht in map-Konstrukt (Modification of a read-only value attempted) (8 answers)
Opened by Rolf_PlusW at 2010-11-03 16:49

Linuxer
 2010-11-03 17:00
#142431 #142431
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

ist die Zeile 134 mit der von Dir gezeigten "Source" identisch?

mit Deinen Beispieldaten bekomme ich nur folgende Meldungen:

Code: (dl )
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.


Testcode:
Code (perl): (dl )
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;


Die Warnungen werd ich los, indem ich ||() hinter @{$_->{texts}}) einfüge.

Kannst Du ein Minimalskript erstellen, mit dem Deine Meldung reproduziert werden kann?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Finde den Fehler nicht in map-Konstrukt (Modification of a read-only value attempted)