PerlStream ps;
// Have Perl do simple addition in a scalar context
ps << "10+5" << perl_execute;
int fifteen = ps[0];
// Return a list of values, including a hash reference
ps.array() << "(2,5,{'a'=>'foo', 'b'=>'bar'})" << perl_execute;
int two = ps[0]; // line 9
double five = ps[-2]; // line 10
string foo = ps[2]["a"]; // line 11
ps.voidc() << "require Cwd;" << perl_execute; // void context
// Bad string of references are tolerated
int undefined = ps[0]["a"][-3]["bar"]; // line 16; undefined = 0
// iterate over an array and hash
ps.array() << "( [4, 9, 16], {'a'=>25, 'b'=>36, 'c'=>49} )" <<
perl_execute;
PerlValue::array_iter ai; // line 21
for (ai = ps[0].array_begin(); ai != ps[0].array_end(); ++ai) {
if (ai->isInt())
cout << "Value = " << static_cast<int>(*ai) << endl;
}
PerlValue::hash_iter hi; // line 26
for (hi = ps[1].hash_begin(); hi != ps[1].hash_end(); ++hi) {
cout << "Key=" << hi->first << " Val=" << hi->second << endl;
}
// Cause an evaluation exception
ps.setExceptionFlags(PerlStream::eEvalFail);
try { // line 33
ps << "[ 10, 15" << perl_execute; // Missing ']'
}
catch (exception &e) {
cerr << "Error: " << e.what() << endl; // e is PerlEvalError
}
End of Listing