Hello,
I got a file I am using, but I cannot understand what this file is doing...
Can someone explain?
Here is a part of the file:
#! /usr/bin/tclsh
set mctal [open mctal.[lindex $argv 0] r]
set pow [lindex $argv 1]
set SS [lindex $argv 2]
set a [lindex $argv 3]
set b [lindex $argv 4]
set c [lindex $argv 5]
set d [lindex $argv 6]
set e [lindex $argv 7]
set f [lindex $argv 8]
set g [lindex $argv 9]
set h [lindex $argv 10]
set i [lindex $argv 11]
set j [lindex $argv 12]
set k [lindex $argv 13]
set l [lindex $argv 14]
set m [lindex $argv 15]
set n [lindex $argv 16]
set o [lindex $argv 17]
set p [lindex $argv 18]
set q [lindex $argv 19]
set r [lindex $argv 20]
set s [lindex $argv 21]
set t [lindex $argv 22]
set u [lindex $argv 23]
set c [lindex $argv 24]
set v [lindex $argv 25]
set w [lindex $argv 26]
set x [lindex $argv 27]
set y [lindex $argv 28]
set z [lindex $argv 29]
set aa [lindex $argv 30]
set ab [lindex $argv 31]
set ac [lindex $argv 32]
set ad [lindex $argv 33]
while {![regexp \^tally\ \*\($a\|$b|$c|$d|$e|$f|$g|$h|$i|$j|$k|$l|$m|$n|$o|$p|$q|$r|$s|$t|$u|$v|$w|$x|$y|$z|$aa|$ab|$ac|$ad\) [gets $mctal] line cell]} {
}
while {![regexp \^vals [gets $mctal] line]} {
}
regexp {^ *([0-9]\.[0-9]*[Ee][+-][0-9]*)} [gets $mctal] line $cell
...
[30 times the same sequence]
...
while {![regexp \^tally\ \*\($a\|$b|$c|$d|$e|$f|$g|$h|$i|$j|$k|$l|$m|$n|$o|$p|$q|$r|$s|$t|$u|$v|$w|$x|$y|$z|$aa|$ab|$ac|$ad\) [gets $mctal] line cell]} {
}
while {![regexp \^vals [gets $mctal] line]} {
}
regexp {^ *([0-9]\.[0-9]*[Ee][+-][0-9]*)} [gets $mctal] line $cell
eval set cella [expr $$a/($$a+$$b+$$c+$$d+$$e+$$f+$$g+$$h+$$i+$$j+$$k+$$l+$$m+$$n+$$o+$$p+$$q+$$r+$$s+$$t+$$u+$$v+$$w+$$x+$$y+$$z+$$aa+$$ab+$$ac+$$ad)]
eval set cellb [expr $$b/($$a+$$b+$$c+$$d+$$e+$$f+$$g+$$h+$$i+$$j+$$k+$$l+$$m+$$n+$$o+$$p+$$q+$$r+$$s+$$t+$$u+$$v+$$w+$$x+$$y+$$z+$$aa+$$ab+$$ac+$$ad)]
...
[30 times...]
...
eval set cellad [expr $$ad/($$a+$$b+$$c+$$d+$$e+$$f+$$g+$$h+$$i+$$j+$$k+$$l+$$m+$$n+$$o+$$p+$$q+$$r+$$s+$$t+$$u+$$v+$$w+$$x+$$y+$$z+$$aa+$$ab+$$ac+$$ad)]
close $mctal
exec sed -e "1,$ s/$pow/[expr $cella*$pow]/g" skele.$SS.a > skeleton.a
exec sed -e "1,$ s/$pow/[expr $cellb*$pow]/g" skele.$SS.b > skeleton.b
[30 times]
exec sed -e "1,$ s/$pow/[expr $cellac*$pow]/g" skele.$SS.ac > skeleton.ac
exec sed -e "1,$ s/$pow/[expr $cellad*$pow]/g" skele.$SS.ad > skeleton.ad
puts stdout "a = $cella"
puts stdout "b = $cellb"
[30 times]
puts stdout "ac = $cellac"
puts stdout "ad = $cellad"
I can understand the variable definition, the sed command and the output assigning, but not the regular expression part...
Thanks