Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^3: Problem with around BUILDARGS

by stvn (Monsignor)
on Mar 28, 2011 at 17:01 UTC ( #895973=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Problem with around BUILDARGS
in thread Problem with around BUILDARGS

So the problem is that $self is not an object instance, but rather the class. One way to solve this is to use builder instead of default like so.

has 'serverLocation' => (is=>'ro',isa=>'Str',builder =>'buildServerLoc +ation'); sub buildServerLocation { return "$Bin/lib/selenium-server-standalone-2.0b2.jar" } sub FOREIGNBUILDARGS { my $class = shift; my %args = ( @_ == 1 ? %{ $_[0] } : @_ ); $args{serverLocation} ||= $class->buildServerLocation; $args{host}//="localhost"; $args{port}//=4444; $args{browser}//="*firefox"; $args{browser_url}//='http://wwww.google.com'; return %args; }

-stvn


Comment on Re^3: Problem with around BUILDARGS
Select or Download Code
Re^4: Problem with around BUILDARGS
by saintex (Scribe) on Mar 29, 2011 at 14:23 UTC
    thank you for your answer!
Re^4: Problem with around BUILDARGS
by saintex (Scribe) on Apr 19, 2011 at 16:45 UTC
    Hello,
    I tried just now to use this solution in a real case...

    But It works, until you don't have to call the proprieties in your code.

    If you try to call $self->serverLocation anyway in your code you have that error:

    Can't use string ("nameOfTheClass") as a HASH ref while "strict refs" +in use at accessor serverLocation defined at /home/saintex/workspace/ +perl_scripts/navigator/classes/Browser/Selenium2.pm
    Any help? Thank you

      I would need to see more code, but I suspect that something inside the 'serverLocation' accessor is trying to use the "nameOfTheClass" as if it was an object instance. Show some more context and perhaps I can help.

      -stvn
        Hello, I'm trying to use the accessor as string.

        That is the method in my class:

        sub startServer { my $self = shift; defined(my $pid=fork) or die "Cannot fork: $!"; unless ($pid) { eval { exec 'java -jar '.$self->serverLocation; }; die "Impossibile far partire il server selenium: $@\n;" if ($@ +); } }
        Thank you for your help.

        I'm interested to solve this problem for knowledge reason, not for production... so I'm not in any hurry.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://895973]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (12)
As of 2015-07-03 13:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (53 votes), past polls