Re^2: Help with script recognizing variable in string
by TonyNY (Beadle) on Jun 20, 2018 at 02:40 UTC
|
Actually using double quotes instead of single quotes worked...loving perl more and more! | [reply] |
|
|
| [reply] [d/l] |
|
|
Hi Laurent,
The return I get when using ${bfcomputer} yields all of the computers of the site not the computer supplied as the command line argument, but again for some reason when I use double quotes it works. Could this have something to do with using the system command on a Solaris box?
| [reply] |
|
|
|
|
|
|
I stand corrected Laurent, when I tested putting the variable in curly braces I forgot to change the single quotes to double quotes so the curly braces with the double quotes works, thanks!
| [reply] |
|
|
Hmmm, watch out double quotes could lead to problems if you had other variable-looking items, e.g. those prepended by a sigill ($,%,@,&,etc.) in your string and perl would want to interpolate them too! If they happen to exist, perl would be eager to replace them, if they do not exist perl will replace them with empty unless you used use strict; use warnings;
Why don't you build your $bfquery as a sequence of string concatenations using single quotes or variable contents, for example:
$bfquery=
# this is a string in single quotes so nothing is interpolated
'query?relevance=%28names%20of%20it%2C%20ip%20addresses%20of%20it
+%2C%20root%20server%20of%20it%2C%20operating%20systems%20of%20it%2C%2
+0
last%20report%20time%20of%20it%2C%20agent%20versions%20of%20it%2C%20va
+lues%20of%20results%20from%20%28BES%20Property%20%22_SupportGroup%22%
+29%20of%20it%29%20of%20bes%20
computers%20whose%20%28%20name%20of%20it%20as%20lowercase%20starts%20w
+ith%20%22'
# add to this the value of this perl variable
. $bfcomputer
# and also this fixed string
. '%22%29'
# end of concatenation
;
| [reply] [d/l] [select] |
|
|
$bfquery=
# this is a string in single quotes so nothing is interpolated
'query?relevance=%28names%20of%20it%2C%20ip%20addresses%20of%20it
+%2C%20root%20server%20of%20it%2C%20operating%20systems%20of%20it%2C%2
+0
+last%20report%20time%20of%20it%2C%20agent%20versions%20of%20it%2C%20v
+a
+lues%20of%20results%20from%20%28BES%20Property%20%22_SupportGroup%22%
+29%20of%20it%29%20of%20bes%20computers%20whose%20%28%20name%20of%20it
+%20as%20lowercase%20starts%20
+with%20%22'
# add to this the value of this perl variable
. $bfcomputer
# and also this fixed string
. '%22%29';
# end of concatenation
<?xml version="1.0" encoding="UTF-8"?>
<BESAPI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNa
+mespaceSchemaLocation="BESAPI.xsd">
<Query Resource="(names of it, ip addresses of it">
<Result></Result>
<Error>This expression could not be parsed.</Error>
</Query>
</BESAPI>
sh: +%2C%20root%20server%20of%20it%2C%20operating%20systems%20of%20it%
+2C%20: not found
sh: +last%20report%20time%20of%20it%2C%20agent%20versions%20of%20it%2C
+%20va: not found
sh: +lues%20of%20results%20from%20%28BES%20Property%20%22_SupportGroup
+%22%: not found
sh: +29%20of%20it%29%20of%20bes%20computers%20whose%20%28%20name%20of%
+20it: not found
sh: +%20as%20lowercase%20starts%20: not found
sh: +with%20%22server01%22%29: not found
| [reply] [d/l] |
|
|
|
|
use strict;
use URI::Escape;
my $values = join ', ',(
'names of it',
'ip addresses of it',
'root server of it',
'operating systems of it',
'last report time of it',
'agent versions of it',
'values of results from (BES Property "_SupportGroup") of it'
);
my $bfcomputer = 'ABC123';
my $who = 'name of it as lowercase starts with "'.$bfcomputer.'"';
my $relevance = "($values) of bes computers whose ( $who)";
my $bfquery = 'query?relevance='.uri_escape($relevance);
poj | [reply] [d/l] |
|
|
| [reply] |
Re^2: Help with script recognizing variable in string
by TonyNY (Beadle) on Jun 20, 2018 at 20:06 UTC
|
| [reply] |