use warnings; use strict; while () { my $match = /(NP\s+)(U\s+)(Pu\s*)/i; last if ! ($_ = ); next if ! $match; chomp; my $NP = substr $_, $-[1], $+[1] - $-[1] + 1; my $N = substr $_, $-[2], $+[2] - $-[2] + 1; (my $Pu = substr $_, $-[3]) =~ s/(\s)//g;; $NP =~ s/(\s)//g; $N =~ s/(\s)//g; print "NP $NP, N $N, Pu $Pu\n"; } __DATA__ 000 NP U Pu 001 1.270000 000001 3.141000 002 Lev N Pu 003 0.13 000001 3.277118 004 NP U Pu 005 1.000220 000002 3.098761 006 Yac S Yb 007 10.33000 000001 90000000 #### NP 1.2700000, N 0000013, Pu 3.141000 NP 1.0002200, N 0000023, Pu 3.098761