#!/usr/bin/perl use strict; use warnings; # Parse Gaussian '03 output files # for the lengths of the bonds # in Diaminopolymethine Dyes # strictly between Carbon and Nitrogen # or Carbon and Carbon my $infile, my $outfile; my @inlog, my @inlog_n, my @logged; chomp($infile = <>); chomp($outfile = <>); open FILE, "<$infile"; while() { push @inlog, $_; } close FILE; for(@inlog) { push @inlog_n, grep( /^\s?!{1}?\s*(c|n)/, $_); } @inlog = grep( !/h|c{3}?|nc{2}?|(estimate)|c{2}?n{1}?/, @inlog_n ); pop @inlog_n for @inlog_n; @inlog_n = map{ split( /\s/, $_) } @inlog; pop @inlog for @inlog; for(@inlog_n) { push @logged, $_ if $_=~/\d/ && $_!~/[a-zA-Z]/; } open LOG, ">$outfile"; for(@logged) { print LOG "$_\n" if $_>=1; } close LOG; #### C(qw/74 97 104 112/);sub C{while(@_){$c**=$C;print (map{chr($C!=$c?shift:pop)}$_),$C+=@_%2!=1?1:0}}