How to store values into variable in perl

Hi,

Can you please help me of how to store the values into variables.

Here is the output in LINUX for the below command.

$free

output :
total used free
Mem: 3079276 3059328 19948
Swap: 1023992 6324 1017668

while i am trying the below commands i got the ouput
free |grep "Mem:" |awk ' {print $2}'
output for the above cmd is printing == 3079276

similar to the swap as well..

But i want to store the ouput value in a variable

I also decalred the variable like this

$Memory=`free |grep "Mem:" |awk ' {print $2}'`;
print "$Memory ";
It is printing like this
Mem: 3079276 3059328 19948

Can anyone please help me regarding this how to store the values into variables....:confused:

Try this:

Memory=$(free | awk '/Mem:/{print $2}')
print $Memory

Regards

$2 in the awk script probably gets substituted with something unexpected when you evaluate it in backticks in Perl. $2 in Perl is the result of the second set of parentheses in the latest regular expression match; presumably it's empty, so the awk script is just "print".

Quote the variable properly, and it should work.

Note, though, that you have a Useless Use of Grep when you pipe to awk -- awk can grep just fine. And by the same logic, I guess it's a Useless Use of Awk to call awk from Perl, because Perl can do everything awk can, only better.

perl -e '$mem = `free`; $mem =~ s/.*Mem:\s+(\d+)\s.*/$1/s'

The /s option causes .* to match across newlines, so you can handle the multiple lines of output from free as one expression.

It is working fine now. I appreciate your help.Once again thanks a million.:cool::slight_smile: