How to count the number of lines in a file using Bash?

Perl: Calculating distance between atoms in pdb file?

  • Hi, I am creating a program that calculates the distance between the x, y, z coordinates of atoms listed in a pdb file. So far i have this: #!/usr/bin/perl -w $num = 0; $count = 0; while (<>) { # Find x, y, z coordinates and store in separate arrays if ($_ =~ /^ATOM/) { @line = $_ =~ m/^(.....).(.....).(....).(...)..(....).… $x = $line[5]; $arrayx[$num] = $x; $y = $line[6]; $arrayy[$num] = $y; $z = $line[7]; $arrayz[$num] = $z; ++$num; } # Count number of atoms if ($_ =~ /^ATOM/) { ++$count; } } # Calculate distance between all atom coordinates foreach $i (0..$count) { foreach $j ($i + 1..$count) { $dist = sqrt( ($arrayx[$i] - $arrayx[$j])**2 + ($arrayy[$i] - $arrayy[$j])**2 + ($arrayz[$i] - $arrayz[$j])**2 ); print "$dist\n" } } When I run the program i get this message popping up for some of the lines and I don't know what to do to fix it: "Use of uninitialized value in subtraction (-) at ./gas.pl line 42, <> line 14368" The line that it states is the last line of the pdb file, however i don't see why this line is involved in my calculations as this is not present in any of my arrays. The pdb file I'm using is located here : http://www.rcsb.org/pdb/explore.do?structureId=3PBL Any help would be much appreciated as I am VERY new to Perl. Thanks

  • Answer:

    First of all, add the following to the top of your program, it's common courtesy BEFORE coming here and bothering the world: use strict; use warnings; Second, what is line 42 of your program? Third, do you not know the most basic techniques of debugging? Add some "print" statements so you know what exactly is going on. Like what is the value of $i, $j, what exactly is in your array, etc.

monica at Yahoo! Answers Visit the source

Was this solution helpful to you?

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.