in reply to Re: extract the value before a particualr string
in thread extract the value before a particualr string

thanks.

I did try somethin like using split with multiple parameters but it extacts the whole line.

can u help mein understand this line

print $1,$/ if/\s+?(\d+?)\/total$/;

I understood what we are trying to do here if/\s+?(\d+?)\/total but the thing before and after i dont get it

Replies are listed 'Best First'.
Re^3: extract the value before a particualr string
by Random_Walk (Prior) on Sep 05, 2013 at 11:13 UTC

    $1 holds the result of the pattern match captured inside (parenthesis). If you had multiple parens then there would also be a $2, $3, etc. The $/ variable is the input record separator, this defaults to being a newline, so print $_,$/ is equivalent to print "$_\n". The $ after total tells the regex engine that total will be the last thing on the line.

    Cheers,
    R.

    Pereant, qui ante nos nostra dixerunt!

      So, if we need to do the operation on a variable line and assign the output to a variable how do we go abt it???

      $count = $line if/\s+?(\d+?)\/total$/;

      will this look fine?

        No, that would be

        $count = $1 if $line =~ /\s+?(\d+?)\/total$/;
Re^3: extract the value before a particualr string
by 2teez (Vicar) on Sep 05, 2013 at 12:05 UTC

    Random_Walk has given a good explanation.
    However, maybe the following line could help clear the that line a bit.
    print $1,$/ if m{\s+?(\d+?)\/total$};
    The above line shows clearly that after "total", what you have is "$" that indicate the end of the string and not "$/". The / that follows "$" is the second "slash" of the match operator i.e

    m// ^ This one
    In addition to all that, using the module "YAPE::Regex::Explain" the regular expression matches could be explain as thus:
    The regular expression: (?-imsx:\s+?(\d+?)/total$) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- \s+? whitespace (\n, \r, \t, \f, and " ") (1 or more times (matching the least amount possible)) ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- \d+? digits (0-9) (1 or more times (matching the least amount possible)) ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- /total '/total' ---------------------------------------------------------------------- $ before an optional \n, and the end of the string ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------

    If you tell me, I'll forget.
    If you show me, I'll remember.
    if you involve me, I'll understand.
    --- Author unknown to me
Re^3: extract the value before a particualr string
by marinersk (Priest) on Sep 05, 2013 at 12:56 UTC
    I did try somethin like using split with multiple parameters but it extacts the whole line.

    I'm intrigued. Could you post the code that extacted the whole line?