Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl -w
- use common::sense;
- use autodie;
- my $p = 0;
- my $lim = 5000;
- my @a = (1..$lim);
- my @loop;
- my $s = 0;
- for my $cnt (1..$lim){
- $a[$cnt] = 0;
- }
- open my $bf, "<", $ARGV[0];
- my $data;
- {
- local $/;
- $data = <$bf>;
- }
- sub getchar{
- chomp (my $in = <>);
- return (ord(substr($in,0,1)));
- }
- foreach my $i (split (//, $data)){
- $i = substr($data,$s,1);
- given ( $i ) {
- when ($i eq '+') {$a[$p] = -1 if ($a[$p] == 255); $a[$p]++;}
- when ($i eq '-') {$a[$p] = 256 if ($a[$p] == 0); $a[$p]--;}
- when ($i eq '>') {$p = -1 if ($p == $lim); $p++;}
- when ($i eq '<') {$p = $lim + 1 if ($p == 0); $p--;}
- when ($i eq ','){
- $a[$p] = getchar;
- }
- when ($i eq '.'){
- print chr $a[$p];
- }
- when ($i eq "[") {
- push (@loop, $s);
- }
- when ($i eq "]") {
- if ($a[$p] != 0) {
- $s = $loop[scalar(@loop) - 1];
- }
- else {
- pop @loop;
- }
- }
- }
- }
- print "\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement