Advertisement
Guest User

Untitled

a guest
Jan 11th, 2013
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env perl -w
  2.  
  3. use common::sense;
  4. use autodie;
  5.  
  6. my $p = 0;
  7. my $lim = 5000;
  8. my @a = (1..$lim);
  9. my @loop;
  10. my $s = 0;
  11.  
  12. for my $cnt (1..$lim){
  13.     $a[$cnt] = 0;
  14. }
  15.  
  16. open my $bf, "<", $ARGV[0];
  17. my $data;
  18. {
  19.     local $/;
  20.     $data = <$bf>;
  21. }
  22.  
  23. sub getchar{
  24.     chomp (my $in = <>);
  25.     return (ord(substr($in,0,1)));
  26. }
  27.  
  28. foreach my $i (split (//, $data)){
  29.     $i = substr($data,$s,1);
  30.         given ( $i ) {
  31.             when ($i eq '+') {$a[$p] = -1 if ($a[$p] == 255); $a[$p]++;}
  32.             when ($i eq '-') {$a[$p] = 256 if ($a[$p] == 0); $a[$p]--;}
  33.             when ($i eq '>') {$p = -1 if ($p == $lim); $p++;}
  34.             when ($i eq '<') {$p = $lim + 1 if ($p == 0); $p--;}
  35.             when ($i eq ','){
  36.                 $a[$p] = getchar;
  37.             }
  38.             when ($i eq '.'){
  39.                 print chr $a[$p];
  40.             }
  41.             when ($i eq "[") {
  42.                 push (@loop, $s);
  43.             }
  44.             when ($i eq "]") {
  45.                 if ($a[$p] != 0) {
  46.                     $s = $loop[scalar(@loop) - 1];
  47.                 }
  48.                 else {
  49.                     pop @loop;
  50.                 }
  51.             }
  52.         }
  53.    
  54. }
  55. print "\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement