"Ken, thanks for your writeup, including forcing me to learn a bit about Test -- I needed that! :-)"
You're welcome. It's good to be able to start a script with use v5.36;.
"I'd rather stick with Perl's slice capability since it reads more cleanly (to me, anyway) ..."
What you choose is entirely up to you.
This correlation stood out for me:
Python | Perl |
[OFFSET:LENGTH] | splice ARRAY, OFFSET, LENGTH |
[:LENGTH] | splice ARRAY, 0, LENGTH |
[OFFSET:] | splice ARRAY, OFFSET |
[:] | splice ARRAY, 0 |
"... and doesn't require copying and modifying the source array."
The source array, @test_array, is not modified at all.
The temporary copy, @temp_array,
is modified in the last statement of (my) get_array_slice_by_python_expr() function;
it's then immediately discarded as it goes out of scope.
I added your three new tests, plus a fourth ([:]), to my original code:
[\@test_array, '[-3:-1]', 'ef'],
[\@test_array, '[-3:-3]', ''],
[\@test_array, '[3:-1]', 'def'],
[\@test_array, '[:]', 'abcdefg'],
All pass:
1..8
ok 1 - Testing: [:3]
ok 2 - Testing: [:-3]
ok 3 - Testing: [3:]
ok 4 - Testing: [-3:]
ok 5 - Testing: [-3:-1]
ok 6 - Testing: [-3:-3]
ok 7 - Testing: [3:-1]
ok 8 - Testing: [:]
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.