title: Using __DATA__ in a program
body: <p>It is used on Stack Overflow all the time but I really don't understand it, nor can I get it to work. However it seems like a really good testing tool.</p>
  
  <p>How do I get the script to read in everything below <code>__DATA__</code> into a file handle? I tried a few ways to read it in instead of tacking on an external file. The data is legitimate, it is from the AutoSys JIL file for job definitions. </p>
  
  <pre><code>#!/efs/dist/perl5/core/5.10/exec/bin/perl
  
  use strict;
  use warnings;
  
  my ( $job, $machine, $command, @line_stat );
  
  #these 4 lines below do not read in data to filehandle
  #my $data = do  {
  #   local $/;
  #   &lt;DATA&gt;;
  #} ;
  
  my $data = &lt;DATA&gt;;    # does not work either
  
  open( my $fh, '&lt;:encoding(UTF-8)', $data )
          or die "Could not open file '$data' $!";
  
  my $count = 0;
  
  while ( my $line = &lt;$fh&gt; ) {
  
      #chomp $line;
      if ( $line =~ /\/\* -{17} \w+ -{17} \*\// ) {
          $count = 1;
      }
      elsif ( $line =~ /(alarm_if_fail:)/ ) {
          $count = 0;
      }
      elsif ( $count ) {
  
          if ( $line =~ m/insert_job: (\w+).*job_type: CMD/ ) {
              push( @line_stat, $1 );
          }
          elsif ( $line =~ m/command:(.*)/ ) {
              push( @line_stat, $1 );
          }
          elsif ( $line =~ m/machine:(.*)/ ) {
              push( @line_stat, $1 );
          }
      }
  }
  
  foreach my $line_wot ( @line_stat ) {
      print "$line_wot\n";
  }
  
  __DATA__
  /* ----------------- COME_AND_PLAY_WITH_US_DANNY ----------------- */
  
  insert_job: COME_AND_PLAY_WITH_US_DANNY   job_type: CMD
  command: /bin/bash -pwd
  machine: capser.com
  owner: twins
  permission: foo,foo
  date_conditions: 1
  days_of_week: mo,tu,we,th,fr
  start_times: "04:00"
  description: "Forever, and ever and ever"
  std_in_file: "/home/room217"
  std_out_file: "${CASPERSYSLOG}/room217.out"
  std_err_file: "${CASPERSYSLOG}/room217.err
  alarm_if_fail: 1
  profile: "/autosys_profile"
  timezone: US/Eastern
  
  /* ----------------- COME_AND_PLAY_WITH_US_AGAIN_DANNY ----------------- */
  
  insert_job: COME_AND_PLAY_WITH_US_AGAIN_DANNY   job_type: CMD
  command: /bin/bash -ls
  machine: capser1.com
  owner: twins
  permission: foo,foo
  date_conditions: 1
  days_of_week: mo,tu,we,th,fr
  start_times: "04:00"
  description: "Forever, and ever and ever"
  std_in_file: "/home/room217"
  std_out_file: "${CASPERSYSLOG}/room217.out"
  std_err_file: "${CASPERSYSLOG}/room217.err
  alarm_if_fail: 1
  profile: "/autosys_profile"
  timezone: US/Eastern
  
  /* ----------------- NEVER_PLAY_WITH_US_AGAIN_DANNY ----------------- */
  
  insert_job: NEVER_PLAY_WITH_US_AGAIN_DANNY   job_type: CMD
  command: /bin/bash -rm *
  machine: capser2.com
  owner: twins
  permission: foo,foo
  date_conditions: 1
  days_of_week: mo,tu,we,th,fr
  start_times: "04:00"
  description: "Forever, and ever and ever"
  std_in_file: "/home/room217"
  std_out_file: "${CASPERSYSLOG}/room217.out"
  std_err_file: "${CASPERSYSLOG}/room217.err
  alarm_if_fail: 1
  profile: "/autosys_profile"
  timezone: US/Eastern
  </code></pre>