libperl-rs 0.3.1

Embed perl5 runtime in Rust
Documentation
use std::env;

use libperl_sys::op;
use libperl_rs::Perl;

mod eg;
use eg::op0::*;

#[cfg(perlapi_ver26)]
pub struct Walker<'a> {
    pub perl: &'a Perl,
    pub cv: *const libperl_sys::cv,
}

#[cfg(perlapi_ver26)]
impl<'a> Walker<'a> {
    pub fn walk(&'a self, o: *const op, level: isize) {
        print!("{}", "  ".repeat(level as usize));
        println!("{:?} {:?}", op_name(o), op_extract(&self.perl, self.cv, o));
        for kid in sibling_iter(o) {
            self.walk(kid, level+1);
        }
    }
}

#[cfg(perlapi_ver26)]
fn my_test() {
    let mut perl = Perl::new();
    perl.parse_env_args(env::args(), env::vars());
    
    let walker = Walker {perl: &perl, cv: perl.get_main_cv()};

    walker.walk(perl.get_main_root(), 0);
}

#[cfg(not(perlapi_ver26))]
fn my_test() {
    println!("Requires perl >= 5.26");
}

fn main() {
    my_test();
}