our($VERSION, @ISA, @EXPORT_OK);
-$VERSION = "1.09";
+$VERSION = "1.24";
use Carp;
use Exporter ();
-use XSLoader ();
+use XSLoader;
BEGIN {
@ISA = qw(Exporter);
sub opdump (;$);
use subs @EXPORT_OK;
-XSLoader::load 'Opcode', $VERSION;
+XSLoader::load();
_init_optags();
# Split into lines, keep only indented lines
my @lines = grep { m/^\s/ } split(/\n/);
- foreach (@lines) { s/--.*// } # delete comments
+ foreach (@lines) { s/(?:\t|--).*// } # delete comments
my @ops = map { split ' ' } @lines; # get op words
foreach(@ops) {
=head1 TO DO (maybe)
- $bool = opset_eq($opset1, $opset2) true if opsets are logically eqiv
-
+ $bool = opset_eq($opset1, $opset2) true if opsets are logically
+ equivalent
$yes = opset_can($opset, @ops) true if $opset has all @ops set
@diff = opset_diff($opset1, $opset2) => ('foo', '!bar', ...)
rv2sv sassign
- rv2av aassign aelem aelemfast aslice av2arylen
+ rv2av aassign aelem aelemfast aelemfast_lex aslice av2arylen
- rv2hv helem hslice each values keys exists delete
+ rv2hv helem hslice each values keys exists delete aeach akeys
+ avalues reach rvalues rkeys
- preinc i_preinc predec i_predec postinc i_postinc postdec i_postdec
- int hex oct abs pow multiply i_multiply divide i_divide
- modulo i_modulo add i_add subtract i_subtract
+ preinc i_preinc predec i_predec postinc i_postinc
+ postdec i_postdec int hex oct abs pow multiply i_multiply
+ divide i_divide modulo i_modulo add i_add subtract i_subtract
left_shift right_shift bit_and bit_xor bit_or negate i_negate
not complement
substr vec stringify study pos length index rindex ord chr
- ucfirst lcfirst uc lc quotemeta trans chop schop chomp schomp
+ ucfirst lcfirst uc lc fc quotemeta trans transr chop schop
+ chomp schomp
match split qr
cond_expr flip flop andassign orassign dorassign and or dor xor
- warn die lineseq nextstate scope enter leave setstate
+ warn die lineseq nextstate scope enter leave
- rv2cv anoncode prototype
+ rv2cv anoncode prototype coreargs
- entersub leavesub leavesublv return method method_named -- XXX loops via recursion?
+ entersub leavesub leavesublv return method method_named
+ -- XXX loops via recursion?
- leaveeval -- needed for Safe to operate, is safe without entereval
+ leaveeval -- needed for Safe to operate, is safe
+ without entereval
=item :base_mem
gvsv gv gelem
- padsv padav padhv padany
+ padsv padav padhv padcv padany
+
+ once
rv2gv refgen srefgen ref
- bless -- could be used to change ownership of objects (reblessing)
+ bless -- could be used to change ownership of objects
+ (reblessing)
pushre regcmaybe regcreset regcomp subst substcont
sselect select
pipe_op sockpair
- getppid getpgrp setpgrp getpriority setpriority localtime gmtime
+ getppid getpgrp setpgrp getpriority setpriority
+ localtime gmtime
entertry leavetry -- can be used to 'hide' fatal errors
These ops are related to multi-threading.
- lock threadsv
+ lock
=item :default
stat lstat readlink
- ftatime ftblk ftchr ftctime ftdir fteexec fteowned fteread
- ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned
- ftrread ftsgid ftsize ftsock ftsuid fttty ftzero ftrwrite ftsvtx
+ ftatime ftblk ftchr ftctime ftdir fteexec fteowned
+ fteread ftewrite ftfile ftis ftlink ftmtime ftpipe
+ ftrexec ftrowned ftrread ftsgid ftsize ftsock ftsuid
+ fttty ftzero ftrwrite ftsvtx
fttext ftbinary
utime chmod chown
- fcntl -- not strictly filesys related, but possibly as dangerous?
+ fcntl -- not strictly filesys related, but possibly as
+ dangerous?
=item :subprocess
shmctl shmget shmread shmwrite
+=item :load
+
+This tag holds opcodes related to loading modules and getting information
+about calling environment and args.
+
+ require dofile
+ caller runcv
+
=item :still_to_be_decided
chdir
tied -- can be used to access object implementing a tie
pack unpack -- can be used to create/use memory pointers
- entereval -- can be used to hide code from initial compile
- require dofile
+ hintseval -- constant op holding eval hints
- caller -- get info about calling environment and args
+ entereval -- can be used to hide code from initial compile
reset
syscall dump chroot
-
=back
=head1 SEE ALSO
-ops(3) -- perl pragma interface to Opcode module.
+L<ops> -- perl pragma interface to Opcode module.
-Safe(3) -- Opcode and namespace limited execution compartments
+L<Safe> -- Opcode and namespace limited execution compartments
=head1 AUTHORS