Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Perl print statement + HTTP request

by Anonymous Monk
on Jun 07, 2012 at 10:57 UTC ( [id://974913]=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I have a set of different complex data structures and depending on many variables I print different combination of them. Right now I have 7 different print statement which have 18+ each variables and I want to make it shorter. A simplified example line from a print statement

@{ $Data{$Registration}->{Name} }[$Rank], "\t",

What I would like to do is store this in a variable for example $xx and then just put $xx in the print statements retaining the changeable $Registration and $Rank variables. I tried to look in perl output manuals but could't find something like this (dereferencing is something else).

BTW if I am pulling massive text files using a HTTP Request is it better to save it to a local text file first (printing it on the go since its pulled in batches looking how the files grow) and then load it into a variable or load it straight away. I was wondering about speed and potential memory limits (I am missing some data and I was wondering if this might be the cause). Thanks for your help.

Replies are listed 'Best First'.
Re: Perl print statement + HTTP request
by betterworld (Curate) on Jun 07, 2012 at 11:54 UTC

    What you are thinking of is some kind of a closure, like this:

    my $make_output = sub { my ($Registration, $Rank) = @_; return @{ $Data{$Registration}->{Name} }[$Rank], "\t"; }; print $make_output->($Registration1, $Rank1), $make_output->($Registration2, $Rank2);

    Though I guess that you might be able to simplify your code by using techniques such as OO.

    Update: The following code shows what an OO variant would look like. Maybe you are trying to do something completely different; but according to your short line of code, I imagine that you could probably use this example.

    my $data = Data->new( ... ); print $data->make_output($Registration1, $Rank1), $data->make_output($Registration2, $Rank2); # class definition package Data; sub new { # set up data object # ... } sub make_output { my ($self, $Registration, $Rank) = @_; return @{ $self->{$Registration}->{Name} }[$Rank], "\t"; }
      Exactly what i was looking for and a straighforward method. Anyone have any idea about the HTTP request part? For me it seems it would not matter but I want to make sure.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://974913]
Approved by Perlbotics
Front-paged by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2024-04-19 07:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found