in reply to Print multiple value from file

G'day Helan_Ahmed,

Welcome to the Monastery.

The match operator (see Binding Operators) contains no internal whitespace, i.e. '=~' is correct; '= ~' is incorrect.

Here's how Perl parses that part of the code you posted:

$ perl -MO=Deparse,-p -e '$_= ~/ssId=\s*?(\S+)/' ($_ = (~/ssId=\s*?(\S+)/)); -e syntax OK

Removing the erroneous whitespace, and Perl now knows what you mean:

$ perl -MO=Deparse,-p -e '$_=~/ssId=\s*?(\S+)/' ($_ =~ /ssId=\s*?(\S+)/); -e syntax OK

Adding appropriate whitespace (around the operator) and both Perl and human readers know what you mean:

$ perl -MO=Deparse,-p -e '$_ =~ /ssId=\s*?(\S+)/' ($_ =~ /ssId=\s*?(\S+)/); -e syntax OK

[Aside: Please indicate updates at the place where the update was made. I see you mentioned the update elsewhere in the thread but, until I'd read that far, earlier responses to you original post made no sense. See "How do I change/delete my post?" for details and further explanation.]

Update (additional information): As you're new to Perl, the 'perl -MO=Deparse ...' line possibly means little to you. It's explained in B::Deparse.

— Ken