Domanda

I have a subroutine in Perl that will read a hash and print out all of the key value pairs within the hash. However, instead of going through the foreach loop and printing each time it has a key, I need the result to be added to one scalar, and then return the scalar with the combined results at the end.

In Java I recall you could easily add additional text to a variable, but I'm not sure how to do this in Perl.

Any thoughts? I'll add my print code below, but I basically want to take that and add it to a scalar and return the combined scalar at the end (let's say $output)

sub printSongs
{
    print "Song Database\n\n";
    foreach $key (keys %songList)
    {
       print "Song Title: $key ---- Duration: $songList{$key}\n";
    }
}

PS: I tried to search for this answer as it should be relatively simple, but couldn't find anything. Not sure if append is the best word.

È stato utile?

Soluzione

The concatenation operator in Perl is .. You can also combine it with an assignment as .=.

Altri suggerimenti

sub printSongs
{
    print "Song Database\n\n";

    foreach $key (keys %songList)
      {

       $something_combined = $something_combined . 
           "Song Title: $key ---- Duration: $songList{$key}\n";
      }

   print $something_combined;  

 }

You can easily append anything to a variable with a full stop character.

For example: $something = "Something" . $somevar . "Something else" . "etc";

In Java you normally use + to join strings. In Perl you can use .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top