Thread Variablennamen anzeigen (18 answers)
Opened by bianca at 2021-05-25 11:23

Linuxer
 2021-05-27 09:55
#193302 #193302
User since
2006-01-27
3779 articles
HausmeisterIn

user image
Ich wüsste nicht, dass es dafür eine Option gäbe.

Entweder iterierst Du einzeln durch jedes Key-Value-Paar (Name=>Referenz) und erstellst jeweils einen einzelnen Dump. Diesen Dump dann mit Trennzeile ausgeben oder abspeichern. Oder einen Array von Dumps anlegen und dessen Elemente dann mit der Trennzeile per join() verbinden.

Oder bei der jetzigen Methode: Wenn Du sicher bist, dass Deine Daten das folgende Suchkriterium nicht enthalten:
- Jeder ausgegebener Dump sollte mit einem Semikolon am Zeilenende beendet sein.
- Suche in Deinem $dump nach jedem Semikolon dieser Art und füge dahinter Deine Trennzeile ein.

Beispiel:
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
#! /usr/bin/env perl
use strict;
use warnings;
use 5.010;

sub my_dumper1 {

    require Data::Dumper;

    my @dumps;
    my $trenner = "\n#-----------------\n\n";
    while ( my ( $name, $ref ) = splice( @_, 0, 2 ) ) {
        push @dumps, Data::Dumper->Dump( [$ref], [$name]);
    }
    warn join $trenner, @dumps, "";
}



sub my_dumper2 {

    require Data::Dumper;

    my %args = @_;
    my @names = keys %args;
    my @refs  = values %args;

    my $dump = Data::Dumper->Dump( \@refs, \@names );
    my $trenner = "\n#-----------------\n\n";

    $dump =~ s/;\s*$/;$trenner/mg;
    warn $dump;
}


my $foo = [ qw( an array ) ];
my $bar = { a => "hash" };


warn "Variante 1\n";
my_dumper1( 'foo' => $foo, '*bar' => $bar );

warn "Variante 2\n";
my_dumper2( 'foo' => $foo, '*bar' => $bar );

Last edited: 2021-05-27 10:00:41 +0200 (CEST)
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 Variablennamen anzeigen