Hello SandraA, and welcome to the Monastery!
Please enclose your code in <code> ... </code> tags, that will make it much easier to read (and $linearray[2] will display correctly).
Your approach is essentially the same as that given by muba, and it should work fine, except:
- You are printing the line only if the third field is less than the threshold, but your original specification was: to print the first one if the third one was larger than my threshold (underlining added). See perlop#Relational-Operators.
- You are splitting on "\t", which is fine as long as the data fields are always separated by single tabs. But splitting on whitespace, using /\s+/ or the equivalent ' ', is probably safer. See split.
...is there some smarter and better way?
Well, if you’re into one-liners, then (assuming your data is in, say, a file called “data.txt” in the current directory) you can do this:
>perl -anE "BEGIN { $threshold = shift; } say $F[0] if $F[2] > $thresh
+old;" 1e-50 data.txt
The -a, -n, and -E switches are explained in perlrun. But code stored in a file is, IMO, easier to debug, reuse, and maintain.
Hope that helps,
| [reply] [d/l] [select] |