my ($host)=@_; $host="foo";
####
my $hash=shift; $hash->{host}="foo";
##
##
package Foo;
use strict;
use Carp;
use Data::Dumper;
my %defaults=( a => "sn",b=>"afu" );
sub test{shift; print "test:",shift,"\n"}
sub test2{&test};
sub new {
my $class = shift;
my $attrs = shift;
my %params = @_;
my $self=bless {%defaults},$class;
for my $param (keys %params) {
croak "Unknown param $param"
unless exists($self->{$param});
$self->{$param}=$params{$param};
}
for my $attr (keys %$attrs) {
croak "Unknown attribute"
unless $self->can($attr);
$self->$attr($attrs->{$attr});
}
return $self;
}
my $t=Foo->new( {
test=>"Hello",
test2=>"There",
},a=>1,b=>2);
my $tt=Foo->new();
print Dumper $t,$tt;