I have a data file that looks like this:
uSF1  MD15000000  009214935522451020                9  0101001
88722397N07209999900
116759             0Block Group 1
S      1158      662+39283007-076574503

uSF1  MD15000000  009215035522451020                9  0101002
88722397N07209999900
109338             0Block Group 2
S       842      547+39280857-076573636

uSF1  MD15000000  009215135522451020                9  0101003
88722397N07209999900
182248        135142Block Group 3
S       920      442+39279557-076574311


This is actually three lines that all start with 'uSF1'. This is the
Summary File from the US 2000 Census. I want to print all the census
tracts and blockgroup numbers for FIPS state code = "24" (Maryland) and
FIPS county code "510" (Baltimore City) for summary level '150'. These
are all fixed-length records. I tried:
[EMAIL PROTECTED] UScensus]$ perl -ne '($tract, $bg) =
/^.{8}150.{18}24510.{21}(.{6})(.)/; print "Tract $tract BLKGRP $bg\n";'
mdgeo.uf1 |head
Tract  BLKGRP 
Tract  BLKGRP 
Tract  BLKGRP
<snip>

I thought that this would:
   skip 8 characters and match '150'
   skip 19 more characters and match '24' and '510'
   skip 21 more characters and capture the next 6 in $tract
   capture the next character in $bg
   and print them.

The first two matches work, but nothing is captured. Any ideas what I'm
doing wrong?

Thanks for your help and advice.

-Kevin

Kevin Zembower
Internet Services Group manager
Center for Communication Programs
Bloomberg School of Public Health
Johns Hopkins University
111 Market Place, Suite 310
Baltimore, Maryland  21202
410-659-6139 

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to