use strict; use warnings; while ( ) { next unless /^ATOM\b/; my $chain = substr $_, 21, 1; my $position = 0 + substr $_, 23, 3; my $Zcoordinate = 0 + substr $_, 47, 7; print "$chain, $position, $Zcoordinate\n"; } __DATA__ ATOM 30 N HIS A 66 7.514 15.296 11.222 1.00 12.98 A N ATOM 31 CA HIS A 66 7.318 14.688 12.568 1.00 12.48 A C ATOM 32 C HIS A 66 8.676 14.309 13.156 1.00 11.62 A C ATOM 33 O HIS A 66 9.708 14.518 12.545 1.00 11.76 A O #### while ( ) { next unless /^ATOM\b/; my( $chain, $position, $Zcoordinate ) = unpack( 'x21a1xA3x21A7',$_); print "$chain, $position, $Zcoordinate\n"; } __DATA__ ATOM 30 N HIS A 66 7.514 15.296 11.222 1.00 12.98 A N ATOM 31 CA HIS A 66 7.318 14.688 12.568 1.00 12.48 A C ATOM 32 C HIS A 66 8.676 14.309 13.156 1.00 11.62 A C ATOM 33 O HIS A 66 9.708 14.518 12.545 1.00 11.76 A O ATOM 34 CB HIS A 66 6.450 13.434 12.442 1.00 12.81 A C ATOM 35 CG HIS A 66 5.000 13.829 12.378 1.00 13.36 A C ATOM 36 ND1 HIS A 66 4.332 14.002 11.175 1.00 13.57 A N ATOM 37 CD2 HIS A 66 4.073 14.085 13.360 1.00 13.93 A C ATOM 38 CE1 HIS A 66 3.063 14.347 11.461 1.00 14.23 A C ATOM 39 NE2 HIS A 66 2.851 14.410 12.778 1.00 14.47 A N