
perl_newbi
Novice
Jul 3, 2011, 7:38 AM
Post #11 of 18
(8687 views)
|
Re: [FishMonger] Problem with adding object into array
[In reply to]
|
Can't Post
|
|
Hi, This is my module. Maybe there is a problem there. This is it:
package Instance_xml; use diagnostics; use warnings; use strict; my ( $self, $class ); my ( $instance_type, $test ) ; #type - traffic, negocjacja_reply, negocjacja_request my (@arr_instance_order); # array that have right order of instances key my %hs_instance_class = ( 'name' => '', 'port' => '', 'ip' => '', 'priority' => '', 'bandwidth' => '', ); my %hs_instance_traffic = ( 'port' => '', 'source' => '', 'destination' => '', 'packets' => '', 'priority' => '', 'desired_priority' => '', ); my %hs_instance_negotiation_reply = ( 'port' => '', 'source' => '', 'destination' => '', 'accept' => '', 'priority' => '', 'available_priority' => '', ); my %hs_instance_negotiation_request = ( 'port' => '', 'source' => '', 'destination' => '', 'accept' => '', 'priority' => '', 'desired_priority' => '', ); # Constructor of this class: # we send to it: type of instance (class, traffic, negotiation_reply or negotiation_request) sub new { $class = shift(@_); # print "Class: " . $class . "\n"; $self = {}; # print "Self: " . $self . "\n"; $instance_type = shift(@_); if ( $instance_type eq 'class' ) { %hs_instance_class = ( 'name' => shift, 'port' => shift, 'ip' => shift, 'priority' => shift, 'bandwidth' => shift, ); @arr_instance_order = qw( name port ip priority bandwidth ); } elsif ( $instance_type eq 'traffic' ) { %hs_instance_traffic = ( 'port' => shift, 'source' => shift, 'destination' => shift, 'packets' => shift, 'priority' => shift, 'desired_bandwidth' => shift, ); @arr_instance_order = qw( port source destination packets priority desired_bandwidth); } elsif ( $instance_type eq 'negotiation_reply' ) { %hs_instance_negotiation_reply = ( 'port' => shift, 'source' => shift, 'destination' => shift, 'accept' => shift, 'priority' => shift, 'available_bandwidth' => shift, ); @arr_instance_order = qw( port source destination accept priority available_bandwidth); } elsif ( $instance_type eq 'negotiation_request' ) { %hs_instance_negotiation_request = ( 'port' => shift, 'source' => shift, 'destination' => shift, 'accept' => shift, 'priority' => shift, 'desired_bandwidth' => shift, ); @arr_instance_order = qw( port source destination accept priority desired_bandwidth); } # print $test = "I'm in Instance_xml class"; #referencja do objektu do klasy! #referencja do objektu do klasy! bless $self, $class; return $self; } sub DESTROY { # print("\nCalled Instance_xmls destroy method\n"); } #################################### ####### Sekcja get ################# #################################### #get attribute from class instance sub get_class_attribute { $self = shift @_; my $key = shift @_; return $hs_instance_class{$key}; } #get attribute from traffic instance sub get_traffic_attribute { $self = shift @_; my $key = shift @_; return $hs_instance_traffic{$key}; } #get attribute from negotiation_reply instance sub get_negotiation_reply_attribute { $self = shift @_; my $key = shift @_; return $hs_instance_negotiation_reply{$key}; } #get attribute from negotiation_request instance sub get_negotiation_request_attribute { $self = shift @_; my $key = shift @_; return $hs_instance_negotiation_request{$key}; } #################################### ####### Sekcja set ################# #################################### #set attribute to class instance sub set_class_attribute { $self = shift @_; my $attribute_name = shift @_; my $attribute_value = shift @_; $hs_instance_class{$attribute_name} = $attribute_value; return $hs_instance_class{$attribute_name}; } #set attribute to traffic instance sub set_traffic_attribute { $self = shift @_; my $attribute_name = shift @_; my $attribute_value = shift @_; $hs_instance_traffic{$attribute_name} = $attribute_value; } #set attribute to negotiation_reply instance sub set_negotiation_reply_attribute { $self = shift @_; my $attribute_name = shift @_; my $attribute_value = shift @_; $hs_instance_negotiation_reply{$attribute_name} = $attribute_value; } #set attribute to negotiation_request instance sub set_negotiation_request_attribute { $self = shift @_; my $attribute_name = shift @_; my $attribute_value = shift @_; $hs_instance_negotiation_request{$attribute_name} = $attribute_value; } ####################################### ######## Cleaning function ############# ####################################### sub clean_class_attributes { $self = shift @_; foreach my $key (%hs_instance_class) { $hs_instance_class{$key}=''; } } sub clean_traffic_attributes { $self = shift @_; foreach my $key (%hs_instance_traffic) { $hs_instance_traffic{$key}=''; } } sub clean_negotiation_request_attributes { $self = shift @_; foreach my $key (%hs_instance_negotiation_request) { $hs_instance_negotiation_request{$key}=''; } } sub clean_negotiation_reply_attributes { $self = shift @_; foreach my $key (%hs_instance_negotiation_reply) { $hs_instance_negotiation_reply{$key}=''; } } ####################################### ######## Helping function ############# ####################################### #get keys from proper instance in correct order sub get_instance_orderer_keys { return @arr_instance_order; } sub print_instance_type { print "instance_type: ".$instance_type."\n"; # print $instance_type; } 1; Any ideas and tips for future (I'm a begginer in perls OO) will be appreciate. regards, perl_newbi
|