in reply to How to findout a sub string from the string

For your simple specification you really only need to find the final newline and capture through the end of the string. A regular expression isn't needed for that:

my $found = substr $tmp, rindex($tmp, "\n")+1; print "$found\n";

This solution would translate with minor changes to almost any language.

A regular expression would let you get more fancy in what you gather without the code becoming unmanagable.

my $tmp = "1: 2\n2: /my/tmp/20160213T161519/outgoing\n3: DL\n4: 0\nTem +pSource: , Ue: 2, TaskName=, TempDest: \nTaskName \n/data/busybox/ps +|grep mgen5| grep -v grep\nDL txt is running PID: 3848\nRunning:Mgen: +3848"; my @fields = qw(All Value Name Process_ID); my %substr; @substr{@fields} = $tmp =~ m/\n(Running:(([^:]+):(\d+)))(?:\D|$)/; printf "%-12s[%s]\n", $_, $substr{$_} for @fields;

This produces...

All [Running:Mgen:3848] Value [Mgen:3848] Name [Mgen] Process_ID [3848]

Dave

Replies are listed 'Best First'.
Re^2: How to findout a sub string from the string
by Discipulus (Canon) on Feb 13, 2016 at 22:00 UTC
    wow and ++davido; the regexed monk offered a pre regex (clean and neet) solution using rindex ;=)

    shame on me 'cause i never seen rindex before

    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.

      :) Well to be fair I first toyed with using reverse and index, before thinking to myself... "hmmm... I seem to remember rindex being a thing."

      I wasn't immediately certain that my recollection of rindex came from Perl or another language. Most common languages probably provide something similar.


      Dave