Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[perl] Problem mit dem Dumper

Empfohlene Antworten

Hallo zusammen,

ich habe ein kleines Problem mit dem Dumper in Perl.

Ich versuche ein 4-Dimensionales Array zu serialisieren, was eigentlich auch recht gut funktioniert. Aber ich würde es auch gerne wieder auslesen können. Was wiederrum nicht funktioniert.

Ich speichere den String in ein Textfile, lese dieses dann in einen String ein und versuche mit eval() das ursprüngliche Array wieder zu kriegen.


#!/usr/bin/perl

use strict;

use Data::Dumper;

my @arr = (['xyz', ['123.123.123.123', ['www.xyz.de'],['121312321.124']],

                  'asdf', ['111.111.111.111', ['www.sf.de', 'www.asf.de'], ['12321421.24', '1234234.234']]]);


local $Data::Dumper::Purity = 1;


my $string = Data::Dumper->Dump(@arr);


print $string;


@arr = eval $string;

Von der gewünschten Funktionalität her hab ich das mal in dem kleinen Skript zusammengeschrieben. Ich habe also ein Array, dass ich mit Data::Dumper->Dump(@arr) in einen String speichere. Danach gebe ich ihn aus und hätte dann gerne das Array zurück. Der String sieht in diesem Fall so aus:

$VAR1 = 'xyz';

$VAR2 = [

          '123.123.123.123',

          [

            'www.xyz.de'

          ],

          [

            '121312321.124'

          ]

        ];

$VAR3 = 'asdf';

$VAR4 = [

          '111.111.111.111',

          [

            'www.sf.de',

            'www.asf.de'

          ],

          [

            '12321421.24',

            '1234234.234'

          ]

        ];


Wieso kann ich dann auf $arr[0][0] (xyz) nicht mehr zugreifen?

Grüße

Roland

Ok, das Problem hat sich erledigt...

Ich verwende jetzt "Storable", damit funktionierts einwandfrei.


$VAR1 = 'xyz';

$VAR2 = [

          '123.123.123.123',

          [

            'www.xyz.de'

          ],

          [

            '121312321.124'

          ]

        ];

$VAR3 = 'asdf';

$VAR4 = [

          '111.111.111.111',

          [

            'www.sf.de',

            'www.asf.de'

          ],

          [

            '12321421.24',

            '1234234.234'

          ]

        ];


Wieso kann ich dann auf $arr[0][0] (xyz) nicht mehr zugreifen?

Weil $arr[0] laut Data::Dumper nur 'xyz' enthaelt und keine Referenz. Wenn du eine weitere Referenz wolltest, muesstest du das ganze in [ ] packen.

Wenn du mit Data::Dumper 'serialisieren' willst, musst du bei Binaerdaten aufpassen. Wenn du mit Storable Daten auslagern willst, dann solltest du aufpassen, dass die Daten nicht auf einer anderen CPU-Architektur eingelesen werden.

Es bleibt auf dem selben Server...

Aber danke für den Hinweis :-)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.