Schrift
[thread]7308[/thread]

threads::shared - tiefe Hashes sharen: klapptnicht

Leser: 1


<< >> 6 Einträge, 1 Seite
pktm
 2005-09-25 18:23
#58385 #58385
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich würde gerne eine mehrdimensionale Hash-Datenstruktur zwischen zwei threads sharen.
Leider bekomme ich bei dem Versuch immer die Meldung, dass das nicht ginge
Quote
Invalid value for shared scalar at t_guiBookStore.pl line 40.


Gibt es da irgend einen Trick (außer alles in einen nicht-mehrdimensionalen Hash zu stecken)?
Oder ist das sogar ganz unmöglich eine Struktur wie diese hier zu sharen (ouh, welch ein schrecklicher Sprachgebrauch...)?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
my %config = ();
share(%config);
%config = (
'blubb' => {
'bla' => '',
'chrzzz' => {
'ite' => 'ote',
},
},
);


Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2005-09-25 22:07
#58386 #58386
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es scheint wohl einen Skalar zu erwarten. Schon mal probiert eine Hashreferenz zu sharen??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2005-09-26 00:12
#58387 #58387
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, also zum einen hat er den eindimensionalen Hash den ich share ja genommen, und zum anderen habe ich deine Idee mal ausprobiert - allerdings den Fehler weiterhin erhalten.
Code: (dl )
1
2
3
4
5
6
7
8
9
my $test : shared = {
2 => {
xyz => [

'a',

],
},
};
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2005-09-26 04:53
#58388 #58388
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das wird eben nicht unterstützt - man kann eben keine referenzen sharen... was ganz clever ist, da man sich dadurch nicht viel kaputt machen kann; aber eben doof für den entwickler
renee
 2005-09-26 09:15
#58389 #58389
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Oder kann man vielleicht einen Dump sharen?? Mit CPAN:Data::Dumper einen Dump erzeugen und im im anderen Thread dann mit retrieve arbeiten?!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
esskar
 2005-09-26 10:57
#58390 #58390
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=renee,26.09.2005, 07:15]Oder kann man vielleicht einen Dump sharen?? Mit CPAN:Data::Dumper einen Dump erzeugen und im im anderen Thread dann mit retrieve arbeiten?![/quote]
dann hast du aber nur auf beiden seiten eine copy; wenn du in der einen was änderst, hat das keine auswirkung...
meint idee ist die folgende

Code: (dl )
1
2
3
4
5
6
use threads;
use threads::shared;
use Acme::Ref qw/deref/;

my $var : shared;
$var = "$hashref";


und dann später mit deref wieder ne ref draus machen

aber was eigentlich gehen sollte ist

Code: (dl )
1
2
3
4
5
6
7
8
9
my $test : shared = {
&share({
2 => &share({
xyz => &share([
'a'
]),
}),
}),
};
<< >> 6 Einträge, 1 Seite



View all threads created 2005-09-25 18:23.