Solved

new to PERL: explain a procedure

Posted on 2008-10-17
1
1,239 Views
Last Modified: 2012-06-22
Hello : I AM totally new to PERL
I have to change some functions in a website written in PERL.
Can someone explain me step by step(line by line) what this function does ?
especially
   $Session = CGI::Session->new($SESSION_DSN, $source || $class->genRef, $SESSION_ARGS)

(I do use PHP)

Regards





sub create_session {
    my ($class, $source) = @_;
    my $Session;
   
    do {
        $Session && warn "COOKIE exist: $source !";

        $Session = CGI::Session->new($SESSION_DSN, $source || $class->genRef, $SESSION_ARGS)
            or die CGI::Session->errstr;
    }
    while (
        not($source) && not($Session->is_new)
    );

    return $Session;
}
0
Comment
Question by:yarek
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment
 
LVL 39

Accepted Solution

by:
Adam314 earned 500 total points
ID: 22741046
For more details on CGI::Session, see here:
    http://search.cpan.org/~markstos/CGI-Session-4.36/lib/CGI/Session.pm

#define a subroutine, named create_session
sub create_session {
    #Get the first passed parameter as $class, the second as $source
    my ($class, $source) = @_;
    
    #define a variable $Session, with no value
    my $Session;
    
    #Beginning of a loop
    do {
        #If $Session is defined, display a warning
        $Session && warn "COOKIE exist: $source !";
 
        #Set $Session to a new CGI::Session
        #For that new object, use $SESSION_DSN as the data source
        #if $source is defined, use that for the session id, otherwise use $class->genRef
        #use $SESSION_ARGS as options
        #If creating the object failed, die (exit with error value) displaying an error message
        $Session = CGI::Session->new($SESSION_DSN, $source || $class->genRef, $SESSION_ARGS)
            or die CGI::Session->errstr;
    }
    #Continue trying that while $source is not defined, and $Session is not new
    while (
        not($source) && not($Session->is_new)
    );
    
    #Return $Session to the calling procedure
    return $Session;
}

Open in new window

0

Featured Post

Enroll in June's Course of the Month

June's Course of the Month is now available! Every 10 seconds, a consumer gets hit with ransomware. Refresh your knowledge of ransomware best practices by enrolling in this month's complimentary course for Premium Members, Team Accounts, and Qualified Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question