http://www.perlmonks.org?node_id=1023810


in reply to Help to split

Hi semenych,
"...tell me about my mistakes..."

"...and help me this my work.."
After your file was opened, using a "while" loop read your file one at a time. Then use regex, "pick out" the portion of the line you wanted like so:
use warnings; use strict; while (<DATA>) { chomp; print $1, $/ if /:(\w+?)\s\w+?,/; } __DATA__ bsulli03:*:32452:5002:barry sullivan,l230,555-6666,:/students/bsulli03 +:/usr/bin/ksh sbarto22:*:32453:7990:sally bartok,l134,444-3333,:/students/sbarto22:/ +usr/bin/ksh sbarto25:*:32453:7990:sparky bartok,l135,444-4444,:/students/sbarto25: +/usr/bin/ksh sbarto35:*:32453:7990:sammy bartok,l137,444-5555,:/students/sbarto35:/ +usr/bin/ksh sdemar03:*:32454:7990:sally demartra,S23,233-5234,:/students/sdemar03: +/usr/bin/ksh sdemar05:*:32454:7990:bill demartra,l123,555-1234,:/students/sdemar05: +/usr/bin/ksh singl04:*:32455:5002:bart singleton,l134,555-1235,:/students/singl:/us +r/bin/ksh gomez:*:32456:7990:bill gomez,l433,535-6666,:/students/gomez:/usr/bin/ +ksh bolde01:*:32457:7990:bart bolden,l444,444-1234,:/students/bolde:/usr/b +in/ksh reaga09:*:32458:7990:cal reagan,l455,333-1234,:/students/reaga:/usr/bi +n/ksh liu44:*:32460:5002:tom liu,s213,222-1234,:/students/liu:/usr/bin/ksh ulano:*:32462:7990:sally ulanouskay,s233,222-9999,:/students/ulano:/us +r/bin/ksh tran56:*:32463:5002:phuong tran,s111,444-8888,:/students/tran:/usr/bin +/ksh mehr:*:32464:5003:cindy mehr,c113,555-8888,:/students/mehr:/usr/bin/ks +h ramos:*:32449:7990:olivo ramos,l454,999-0000,:/students/ramos:/usr/bin +/ksh brown:*:32459:7990:bart bro,l477,888-7654,:/students/brown:/usr/bin/ks +h mojic:*:32461:7990:celia mojica,c242,555-7654,:/students/mojic:/usr/bi +n/ksh fisher:*:2915:208:cindy fisher,l312,478-0371,:/users/fisher:/usr/bin/k +sh bsulli02:*:32452:5002:bart sullivan,l130,555-5555,:/students/bsulli02: +/usr/bin/ksh
Note:Am assuming that the first names are the names that come first in the full names.
Output:
barry sally sparky sammy sally bill bart bill bart cal tom sally phuong cindy olivo bart celia cindy bart

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

Replies are listed 'Best First'.
Re^2: Help to split
by semenych (Initiate) on Mar 17, 2013 at 04:11 UTC

    Thanks,2teez

      Or more simply, without going for exact perl. You could use:
      perl -e 'print `cat file|cut -d "," -f1|cut -d ":" -f5|cut -d " " -f1` +;'
      (Replace file with exact name of your file and/or absolute path). Output: barry sally sparky sammy sally bill bart bill bart cal tom sally phuong cindy olivo bart celia cindy bart
Re^2: Help to split
by semenych (Initiate) on Mar 17, 2013 at 04:15 UTC

    2teez, unfortunately I have not learnt regex yet. Could you please advice how to do it without regexes, maps and other staff, just using one or more split

      "..Could you please advice how to do it without regexes, maps and other staff, just using one or more split.."
      The answer you seek has been given to you in one of the Athanasius's post. Please, check again.

      Hope, this helps

      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