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

Hi there,

I am trying to create a perl program that will be able to retrieve a string from a SQL database and print it out.

Simple enough, but in order for the string to make sense wherever it gets printed out, it depends on the values of various variables at that point in the program.

So in my program if I have some variables like:
$me = "John"; $friend = "Jim"; $numberInGroup = 2;
And in the SQL database I have some strings like

'Hello, $me, it's great to see you. I see you have brought $friend as well!'

'Ah, $me and $friend, just who I wanted to catch up with!'

'$me ? $friend ? What are you $numberInGroup doing here?'

Is there a way to format either the query to the sql database or a way to formet the strings when they are put into the database so that the program will print out the value of the variable rather than literally "$me" "$friend" and "$numberInGroup" ?

Once put into the database the strings should never need to be edited, except for correcting spelling errors, etc.

Alternatively, is there a completely different way to do this?

Replies are listed 'Best First'.
Re: printing a string from an sql field that contains a variable
by moritz (Cardinal) on Jun 28, 2011 at 11:39 UTC
Re: printing a string from an sql field that contains a variable
by Anonymous Monk on Jun 28, 2011 at 11:39 UTC

      Thanks.

      String::Interpolate::RE looks like the most simple of those options. I have installed it, but it isn't working as I would expect, which is along the lines of:

      Basically, with this module installed and available for my scripts to call upon the "strinterp" function mentioned on the cpan page:

      $str = strinterp( $template );

      Where $template is the string I pulled from my database and $str becomes the new string with the variables ($me, $friend, etc) replaced by their current values in the script.

      If so... great, that would be a tidy solution.

      Unfortunately, this just gives the error:

      "Undefined subroutine &main::strinterp called at C:\Users\rest of path\"

      What should I do next? (Thanks in advance, any help is appreciated).

        Do you have this line at the start of your code?

        use String::Interpolate::RE qw( strinterp );
        ~~David~~