Thread Warnung bei verschachtelten Subroutinen (3 answers)
Opened by false_friend at 2012-11-23 12:09

false_friend
 2012-11-23 12:09
#163557 #163557
User since
2011-03-21
24 Artikel
BenutzerIn
[default_avatar]
Liebe Perl-Community,

folgender Code erzeugt eine Warnung, die ich nicht beheben kann:
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
#!/usr/bin/perl

use strict;
use warnings;

package my_package;

sub new {
        my $class = shift;
        my $obj = {
                HASH => {
                        "key1" => 35,
                        "key2" => 28,
                        "key3" => 74,                   
                },
        };
        
        return bless $obj, $class;
}

sub outer_subroutine {
        my $obj = shift;
        
        sub sort_by_value {
                $obj->{"HASH"}{$b} <=> $obj->{"HASH"}{$a};
        }

        foreach my $key ( sort sort_by_value(keys $obj->{"HASH"} ) ) {
                print $key, "\n";
        }
}

package main;

my $object = my_package->new;
$object->outer_subroutine;


Die Warnung lautet Variable "$obj" will not stay shared at sort.pl line 25.

Perl schlägt mir vor, sort_by_value anonym zu machen. Das habe ich probiert, aber dann funktioniert die Sortierung nicht mehr, denn dann bemängelt er Name "my_package::a" used only once: possible typo at sort2.pl line 25. und Name "my_package::b" used only once: possible typo at sort2.pl line 25.

Könnt ihr mir weiter helfen?

View full thread Warnung bei verschachtelten Subroutinen