Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Perl difficulty passing values to function
- package This_package;
- .......
- # returned from function that parses post data ($reqparam)
- my $thisuser = $$reqparam{"username"};
- # escape '@', username is an email
- $thisuser =~ s/@/@/;
- my $thisuser_pass = $$reqparam{'password'};
- print $thisuser; # ok
- print $thisuser_pass; # ok
- my $obj = new users;
- my $valid_user = $obj->login($thisuser, $thisuser_pass);
- .......
- package Another_package;
- sub new {
- my ($class) = @_;
- my $self = {
- _login => undef,
- _create_user => undef,
- ....
- };
- bless $self, $class;
- return $self;
- }
- sub login ($$){
- my ($user, $pass) = @_;
- # some processing
- .....
- return $user; # prints users=HASH(...)
- # return $pass; # prints the value of $user (the actual value)
- # instead of the value of $pass
- }
- my $valid_user = $obj->login($thisuser, $thisuser_pass);
- sub login
- {
- my ( $self , $user , $password ) = @_;
- }
- $self->callAnotherObject( $user );
- callAnotherObject( $user );
- sub login {
- my ($self, $user, $pass) = @_;
- ...
- }
- my $package_obj = Another_package->new;
- $package_obj->login($user, $password);
- package Another_package;
- sub new {
- ...
- }
- sub foo {
- ...
- my $user = login ($user, $password);
- }
- sub login {
- my $self = shift; #Pointer to the Another_package object I'm using
- my $user = shift;
- my $password = shift; #I just love lining things up!
- $self->{USER} = $user; #Bad way of doing it.
- $self->{PASSWD} = $password;
- ... #Some processing.
- return $user;
- }
- sub Login { #In standard Perl, methods are capitalized.
- my $self = shift; #Pointer to Another_package object
- my $user = shift; #Allow user to pass user and password in constructor
- my $password = shift; #I just love lining things up!
- $self->User($user); #Way better: This is a setter/getter method
- $self->Password($password);
- ... #Some processing.
- return $user;
- }
- package Another_package;
- sub new {
- my $class = shift;
- my $user = shift;
- my $password = shift;
- my $self = {};
- bless $self, $class;
- $self->User($user);
- $self->Password($password);
- ...
- return $self;
- }
- sub Login {
- my $self = shift;
- my $user = shift;
- my $pass = shift;
- $self->Password($pass);
- if (not defined $self->User($user)) {
- croak qq(Cannot log in without a user ID);
- }
- ...
- if ($login_successful) {
- return $self->User; #Or maybe a session instant
- else {
- return;
- }
- }
- my $package_obj = Another_package->new($user, $password);
- my $foo = $package_obj->Login;
- if (not defined $foo) {
- foreach my $password qw(swordfish s3x mon3y 7ucky) {
- $package_obj->Password($password);
- last if $foo = $package_obj->Login;
- }
- if (not defined $foo) {
- die "I don't know the password :-(";
- }
- }
- sub User {
- my $self = shift;
- my $user = shift;
- if(defined $user) {
- $self->{USER_INFO}->{USER} = $user;
- }
- return $self->{USER_INFO}->{USER};
- }
- sub Password {
- my $self = shift;
- my $pass = shift;
- if (defined $password) {
- $self->{USER_INFO}->{PASSWORD} = $pass;
- }
- return $self->{USER_INFO}->{PASSWORD};
- }
Add Comment
Please, Sign In to add comment