Новосибирский институт органической химии им. Н.Н. Ворожцова СО РАН

Лаборатория изучения механизмов органических реакций

raschet


#!/usr/bin/perl -ws

####################################################################
my $dir = '/disk2/backup_xyz';   # Directory with calcs (xyz files)
my $mm = 'mm';                   # Path/name
my $formula_xyz = 'formula_xyz'; # Path/name
####################################################################

use vars qw($h);
(my $program = $0) =~ s/^.*[\/\\]//;
if ($h) {
  print "
Usage: $program EtOH
Зависимости: Perl, mm, formula_xyz
  
Простейший frontend над mm и formula_xyz.
Позволяет легко искать результаты расчетов в заданной директории
(задается в начале скрипта), не вычисляя брутто-формулу
\n";
  exit;
}

die "Usage: $program EtOH\n" unless @ARGV;

while (@ARGV) {
  $formula = shift;
  $mm = (`$mm $formula`)[-1];
  @mm = split ' ', $mm;
  $massa = pop @mm;
  die "Error: @mm\t $massa\n" if $massa !~ /^\d+\.\d+$/;
  $brotto = join '', @mm;
  print "$brotto:\n";

  @list = `$formula_xyz $dir`;
  @list = grep {s/^$brotto\s+/$dir\//} @list;
  print @list,"\n";
}