title: No Such Variable When Using While Loop in Expect
body: <p>I'm attempting to access a variable within a while loop in expect, but I keep getting an error that the variable doesn't exist. The code in question:</p>
  
  <pre><code>#!/usr/bin/expect
  spawn ./simulator.sh
  set timeout 1
  
  ...&lt;extra code&gt;...
  
  # Return the time in seconds from epoch
  proc getTime {year month day hour minute} {
      set rfc_form ${year}-${month}-${day}T${hour}:${minute}
      set time [clock scan $rfc_form]
      return $time
  }
  
  # Get a handle to the file to store the log output
  set fileId [open $filename "a"]
  # Get one line at a time
  expect -re {.*the number of lines from the debug log file to appear on one page.*}
  send "1\r"
  # Get the initial time stamp and store the first line
  expect -re {^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})\..*$} {
      puts -nonewline $fileId $expect_out(0,string)
      set initTime $expect_out(1,string) $expect_out(2,string) $expect_out(3,string) $expect_out(4,string) $expect_out(5,string)
  }
  send "1\r"
  # Iterate over the logs until we get at least 5 minutes worth of log data
  while { true } {
      expect -re {^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})\..*$} {
          puts -nonewline $fileId $expect_out(0,string)
          set currentTime $expect_out(1,string) $expect_out(2,string) $expect_out(3,string) $expect_out(4,string) $expect_out(5,string)
      }
      # 300 = 5 minutes * 60 seconds
      if { $initTime - $currentTime &gt; 300 } break
      expect -re {.*enter.*}
      send "n\r"
  }
  
  ...&lt;extra code&gt;...
  </code></pre>
  
  <p>And the error I get is:</p>
  
  <pre><code>$ ./test.sh
  the number of lines from the debug log file to appear on one page1
  201505151624.00 721660706 ns | :OCA (027):MAIN (00) | CONTROL |START LINE
  enter1
  201505151620.00 022625203 ns | :OCA (027):MAIN (00) | CONTROL |com.citrix.cg.task.handlers.ADDeltaSyncHandler:ThreadID:1182, Delta sync on:activedirectory2
  entercan't read "initTime": no such variable
      while executing
  "if { $initTime - $currentTime &gt; 300 } break"
      ("while" body line 7)
      invoked from within
  "while { true } {
          expect -re {^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})\..*$} {
                  puts -nonewline $fileId $expect_out(0,string)
                  set currentTime $expect_o..."
      (file "./test.sh" line 42)
  </code></pre>
  
  <p>I'm sure I'm doing something incredibly stupid, but I can't figure it out for the life of me. Thanks for the help in advance!</p>