Hi semenych,
"...tell me about my mistakes..."
-
First of all, it good practice to use strict and warnings in your scripts.
- Using the open function in Perl, you should always check the return, in case it fails. The same should goes for the close function
"...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
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.