REPORT ZTEST_PERL line-size 80. *&---------------------------------------------------------------------* *& Copyright Piers Harding 2004 - all rights reserved. *& This code is distributed under the same terms as Perl itself. *&---------------------------------------------------------------------* include zibperlmacros. *&---------------------------------------------------------------------* *& storage for test sequence, and examples *& *&---------------------------------------------------------------------* data: perl_string type string, result_string type string, result_string2 type string, result_string3 type string, regex_string type string, target_string type string, package_name type string, method_name type string, objid type string, parameter_string_table like tab512 occurs 0 with header line, target_string_table like tab512 occurs 0 with header line, result_string_table like tab512 occurs 0 with header line. * set this to the logical Registered RFC destination of * your Perl server - it defaults to 'PERL' * %pdest = 'PERL'. *&---------------------------------------------------------------------* * execute a string of Perl code write: /01 'Test: pexec'. perl_string = 'print "Hello!\n";'. pexec perl_string. write: /01 'Executed: ', 11 perl_string. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * execute a string of Perl code - return one value write: /01 'Test: pexec_return'. perl_string = 'print "Hello + return!\n"; "the return bit";'. pexec_return perl_string result_string. write: /01 'Executed: ', 11 perl_string. write: /10 'got this back: ', 25 result_string. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * execute a string of Perl code - return an array write: /01 'Test: pexec_returnn'. perl_string = 'print "Hello + n return!\n"; keys %ENV;'. pexec_returnn perl_string result_string_table. write: /01 'Executed: ', 11 perl_string. write: /01 'Return Code: ', 20 sy-subrc. loop at result_string_table. write: /02 'line: ', 08 result_string_table. endloop. skip 1. * execute N lines of code - return an array write: /01 'Test: pnexecn'. refresh parameter_string_table. do 10 times. parameter_string_table = 'print "time is: ".scalar localtime()."\n"; scalar localtime();'. append parameter_string_table. enddo. write: /01 'Executed x 10: ', 15 parameter_string_table. pnexecn parameter_string_table result_string_table. write: /01 'Return Code: ', 20 sy-subrc. loop at result_string_table. write: /02 'line: ', 08 result_string_table. endloop. skip 1. * Apply a regex to a string - return 1 value write: /01 'Test: pregex'. regex_string = '^(\w+)\s+'. target_string = 'wibble is the first word'. pregex regex_string target_string result_string. write: /01 'regex: ', 08 regex_string. write: /01 'the first word is: ', 20 result_string. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * Apply a regex to a string - return 2 values write: /01 'Test: pregex2'. regex_string = '^(\w+)\s+(\w+)\s+'. pregex2 regex_string target_string result_string result_string2. write: /01 'regex: ', 08 regex_string. write: /01 'the first 2 words are: ', 25 result_string, result_string2. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * Apply a regex to a string - return 3 values write: /01 'Test: pregex3'. regex_string = '^(\w+)\s+(\w+)\s+(\w+)'. pregex3 regex_string target_string result_string result_string2 result_string3. write: /01 'regex: ', 08 regex_string. write: /01 'the first 3 words are: ', 25 result_string, result_string2, result_string3. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * Apply a regex to a string - return N values write: /01 'Test: pregexn'. write: /01 'regex: ', 08 regex_string. pregexn regex_string target_string result_string_table. write: /01 'Return Code: ', 20 sy-subrc. loop at result_string_table. write: /02 'regex result: ', 15 result_string_table. endloop. skip 1. * Apply a regex to a string - return 1 value write: /01 'Test: pnregexn'. target_string_table = 'wibble is the first word'. append target_string_table. target_string_table = 'twaddle is the first word'. append target_string_table. target_string_table = 'scooch is the first word'. append target_string_table. pnregexn regex_string target_string_table result_string_table. write: /01 'Return Code: ', 20 sy-subrc. loop at result_string_table. write: /02 'regex result: ', 15 result_string_table. endloop. skip 1. * Create a Perl object, with parameters passed - return objid write: /01 'Test: pcreate_object'. package_name = 'URI'. refresh parameter_string_table. parameter_string_table = 'http://www.perl.com'. append parameter_string_table. pcreate_object package_name parameter_string_table objid. write: /01 'URI->new - objectid: ', objid. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * Call a method on a Perl object, with parameters passed - return N * values write: /01 'Test: pmethod_call'. refresh parameter_string_table. method_name = 'host'. pmethod_call objid method_name parameter_string_table result_string_table. skip 1. write: /01 '$obj->host(): '. write: /01 'Return Code: ', 20 sy-subrc. loop at result_string_table. write: /02 'line: ', 10 result_string_table. endloop. skip 1. * Delete a Perl object write: /01 'Test: pdelete'. pdelete objid. write: /01 'Return Code: ', 20 sy-subrc. skip 1. * Call a static Perl method, with parameters passed - return N values write: /01 'Test: pstatic_method'. method_name = 'MIME::Base64::encode_base64'. write: /01 'Method: ', 10 method_name. refresh: parameter_string_table, result_string_table. parameter_string_table = 'my piece of text'. append parameter_string_table. pstatic_method method_name parameter_string_table result_string_table. write: /01 'Return Code: ', 20 sy-subrc. loop at result_string_table. write: /02 'line: ', 10 result_string_table. endloop. *