Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Evaluate variable while using

by bliako (Monsignor)
on Oct 21, 2022 at 13:22 UTC ( [id://11147568]=note: print w/replies, xml ) Need Help??


in reply to Evaluate variable while using

If you are prepared to replace the string "Hello ".$a; with a function which constructs the string on-the-fly then:

my $x; my $str = sub { "hello ".${\$x} }; $x = 'kevin'; print $str->(); $x = 'chickenman'; print $str->();

This resembles hippo's Re: Evaluate variable while using (which is simpler as it achieves the same without the use of refs).

A more complete and acceptable solution would be to use an OO approach where a class holds the data and offers methods to update and print the data and any subsequent strings you may want to produce, i.e. $executable. This is a textbook usage for OO which keeps its data and its methods in their castle with crocodiles all around.

{package XYZ; sub new { my $class = shift; my $self = { homedir => '<empty>' }; return bless $self => $class } sub homedir { my $self = $_[0]; if( defined $_[1] ){ $self->{homedir} = $_[1] } return $self->{homedir} } sub executable { my $self = $_[0]; return $self->homedir()."/xyy/abc" +} 1; } my $xyz = new XYZ(); $xyz->homedir("ahah"); print "homedir: ".$xyz->homedir()."\n"; print "exec: ".$xyz->executable()."\n"; # note, when dealing with paths use File::Spec->catdir()

That's probably a good approach.

bw, bliako

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-04-19 13:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found