Thread Probleme mit GetOpt::Long (19 answers)
Opened by YAPD at 2019-06-23 15:58

YAPD
 2019-06-27 21:43
#190152 #190152
User since
2015-09-20
146 Artikel
BenutzerIn

user image
Hallo Zusammen,

nachdem ich mich mal damit beschäftigt habe, stellt sich mir eine
Frage. Und zwar :

Code: (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
use strict;
use warnings;

use 5.020;

# --------------------------------------------------------------------------------------------------------------------------------

my $Zaehler_Values = @ARGV;
print "Values : $Zaehler_Values" , "\n";

my $Schalter = $ARGV[ 0 ];
# print "Schalter : $Schalter" , "\n";

my $Aufruf_Schalter;
my @Aufruf_Parameter;

my %Aufruf_Testumgebung = ( );

for( my $i = 0; $i < $Zaehler_Values; $i++ )
{
if ( $ARGV[ $i ] =~ m/-/)
{
print "Schalter : $ARGV[ $i ]" , "\n";
$Aufruf_Schalter = $ARGV[ $i ];
}

if ( $ARGV[ $i ] !~ m/-/)
{
print "Parameter : $ARGV[ $i ]" , "\n";
push( @Aufruf_Parameter , $ARGV[ $i ] );
}

$Aufruf_Testumgebung{ $Aufruf_Schalter } = \@Aufruf_Parameter;
}

&Verify_Verarbeitung( \%Aufruf_Testumgebung );

# --------------------------------------------------------------------------------------------------------------------------------

sub Verify_Verarbeitung {

my( %Parameter ) = %{ $_[ 0 ] };

my @Test;
my @Neu;

if( exists $Parameter{ '-Modify' } )
{
print "Gefunden";

@Test = @{ $Parameter{ '-Modify' } };
print $Test[ 0 ];
print $Test[ 1 ];
}

if( exists $Parameter{ '-Neu' } )
{
print "Gefunden";

@Neu = @{ $Parameter{ '-Neu' } };
print $Neu[ 0 ];
print $Neu[ 1 ];
}
}

# --------------------------------------------------------------------------------------------------------------------------------

Könnt ihr mir sagen warum ich in der Subroutine folgendes Ergebnis erhalte :
[code]
$ get_ops.pl -Modify test test -Neu voll cool
Values : 6
Schalter : -Modify
Parameter : test
Parameter : test
Schalter : -Neu
Parameter : voll
Parameter : cool
Gefundentesttest
Gefundentesttest


Ich schreibe die Schalter wie z.B. "-Modify" als Schlüssel in den Hash, die Parameter pushe ich
vorher in ein Array und das ist dann der jeweile Wert. So sollte es im Prinzip aussehen :

Code: (dl )
my %Aufruf_Testumgebung = ( -Modify => @Modify_Werte );


Diese Hash übergebe ich dann in die Sub - Routine. Dort überprüfe ich, ob der jeweilige Schalter als Schlüssel
im Hash existiert. Ist dies der Fall, dereferenziere ich das Array in ein anderes Array und gebe die Werte aus.

Ich frage im Prinzip ja nur die SChlüssel der Hashs ab, deswegen verstehe ich nicht, warum, selbst wenn die
Variable ganz anders heisst, 2 mal "Gefundentesttest" ausgegeben wird, anstatt "Gefundentestest Gefundenvollcool" ???

Könnt ihr mir helfen ?

EDIT : Ich habe nun herausgefunden, dass ich blind war, natürlich
werden an den Hash immer das gleiche Array übergeben. Dann
sind die Werte auch gleich.

Allerdings finde ich es nicht optimal, das Array dahingehend
zu manipulieren. Also das ich z. B. einen String an an das Array
anhänge.

Vielen Dank !

Viele Grüße
YAPD
Last edited: 2019-06-27 22:16:23 +0200 (CEST)
Yet Another Perl Developer

View full thread Probleme mit GetOpt::Long