#!/usr/bin/perl $cd .= $_ while (<STDIN>); sub get_char { exit if ($ch_ptr == length($cd)); return substr($cd, $ch_ptr++, 1); } while (1) { $ch = get_char; $cell[$cl_ptr]++ if ($ch eq '+'); $cell[$cl_ptr]-- if ($ch eq '-'); (($_ = chr($cell[$cl_ptr])) && print) if ($ch eq '.'); $cl_ptr++ if ($ch eq '>'); $cl_ptr-- if ($ch eq '<'); if ($ch eq ',') { $inp_ch = getc(STDIN); $cell[$cl_ptr] = ord($inp_ch); } elsif ($ch eq '[') { ($ch_ptr = index($cd, ']', $ch_ptr)) if ($cell[$cl_ptr] == 0); } elsif ($ch eq ']') { ($ch_ptr = rindex($cd, '[', $ch_ptr)) if ($cell[$cl_ptr] != 0) +; } }
In reply to BF Interpreter by aweeraman
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |