Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 507 lines (343 sloc) 13.75 kb
8f67bea @fglock Perlito version 8.0
authored
1 TODO list for Perlito5
2
d6cad9b @fglock Perlito5 - TODO update
authored
3
25b8875 @fglock Perlito5 - TODO update
authored
4 * perlito5 command-line
e4641d7 @fglock Perlito - extensive TODO update
authored
5
6
8f67bea @fglock Perlito version 8.0
authored
7 * libraries
8
3004b77 @fglock Perlito5 - cleanup, update TODO
authored
9 -- these should probably go into namespace Perlito5X::*
10
ce7ce91 @fglock Perlito - TODO update
authored
11 -- Test (implemented as Perlito5::Test)
3004b77 @fglock Perlito5 - cleanup, update TODO
authored
12
ce7ce91 @fglock Perlito - TODO update
authored
13 -- Data::Dumper (implemented as Perlito5::Dumper)
8f67bea @fglock Perlito version 8.0
authored
14
24c23f7 @fglock Perlito5 - TODO update
authored
15 -- create perlito5-specific libs for:
7aeb314 @fglock Perlito5 - TODO update
authored
16 feature.pm
17 Config.pm
18 overload.pm
19 bytes.pm
20 integer.pm
21 constant.pm
22 lib.pm
23 Carp.pm
24 vars.pm
25 Tie::Array
26 Tie::Hash
27 Tie::Scalar
24c23f7 @fglock Perlito5 - TODO update
authored
28
4d56b5d @fglock Perlito5 - add $ENV{PERL5LIB} to @INC
authored
29 alternately, check $^H for strictness - such that perl's own strict.pm just works
30 and ${^WARNING_BITS} for warnings
31
8f67bea @fglock Perlito version 8.0
authored
32
7b982c3 @fglock Perlito5 - update TODO
authored
33 * Parser
34
2537119 @fglock Perlito5 - TODO update
authored
35 -- "'" meaning "::"
36 $'m # $::m
37 $m' # String found where operator expected
38
39 package X'Y # X::Y
40 package X' # Invalid version format (non-numeric data)
41
131944d @fglock Perlito5 - TODO update; add more references to documentation and tests
authored
42 -- attributes
43 http://perldoc.perl.org/attributes.html
c2716c0 @fglock Perlito5 - parser - subroutine attributes
authored
44 missing MODIFY_CODE_ATTRIBUTES handlers
02db591 @fglock Perlito5 - update TODO
authored
45
131944d @fglock Perlito5 - TODO update; add more references to documentation and tests
authored
46 -- create __DATA__
5058d24 @fglock Perlito5 - grammar - save __DATA__ sections
authored
47 %Perlito5::DATA_SECTION contains the __DATA__ for each package
48
ae33743 @fglock Perlito5 - TODO update
authored
49 -- compile-time eval() is not bound to the "program" environment, but to the "compiler" environment instead
131944d @fglock Perlito5 - TODO update; add more references to documentation and tests
authored
50 see README-perlito5-js near "Compile-time / Run-time interleaving"
51
52 my $v;
53 BEGIN { $v = "123" }
54 use Module $v; # $v is not accessible at compile-time
7b982c3 @fglock Perlito5 - update TODO
authored
55
529225f @fglock Perlito5 - TODO update
authored
56 -- parse the regexes
131944d @fglock Perlito5 - TODO update; add more references to documentation and tests
authored
57 create an AST for regexes
7b982c3 @fglock Perlito5 - update TODO
authored
58
b32dc90 @fglock Perlito5 - update TODO
authored
59 -- prototypes (signatures)
131944d @fglock Perlito5 - TODO update; add more references to documentation and tests
authored
60 http://perldoc.perl.org/perlsub.html#Prototypes
61
62 check that undeclared barewords give the right error
63 *foo = sub () { ... } # does prototype work here?
64 check signature in sort()
65 fix the prototype for 'stat(*)' (see t/test.pl in the perl test suite)
fde5276 @fglock Perlito5 - update TODO
authored
66
880ba6e @fglock Perlito5 - TODO update
authored
67 '&@' - See Try::Tiny
68
5f528ed @fglock Perlito5 - parser - more TODO special cases
authored
69 -- "namespace" parsing
131944d @fglock Perlito5 - TODO update; add more references to documentation and tests
authored
70 tests: t5/01-perlito/26-syntax-namespace.t
5f528ed @fglock Perlito5 - parser - more TODO special cases
authored
71
e107c18 @fglock Perlito5 - parser - add "glob variable"
authored
72 $ perl -e ' { package X; sub print { CORE::print(">$_[1]<\n") } } my $x = bless {}, "X"; print $x "xxx" '
73 Not a GLOB reference at -e line 1.
74
75 $ perl -e ' { package X; sub printx { CORE::print(">$_[1]<\n") } } my $x = bless {}, "X"; printx $x "xxx" '
76 >xxx<
77
78 $ perl -MO=Deparse -e ' print X:: "xxx" '
79 print X 'xxx';
80
81 $ perl -e ' use strict; my $x = X::; print $x '
82 X
83
84 $ perl -e ' use strict; my $x = X; print $x '
85 Bareword "X" not allowed while "strict subs" in use
86
daea592 @fglock Perlito5 - add more "use strict"
authored
87 $ perl perlito5.pl -MO=Deparse -e ' ::X::x::y '
88 join("", ::{'main::X::'} x main::y);
89
5f528ed @fglock Perlito5 - parser - more TODO special cases
authored
90 $ perl -MO=Deparse -e ' ::X '
91 '???';
92
93 $ perl -MO=Deparse -e ' sub X {} ::X '
94 sub X { }
95 X;
96
d216d0e @fglock Perlito5 - parser - namespace TODO - more corner cases
authored
97 $ perl -e ' $::X::::X = 3; print $main::X::::X ' # 3
d69c95a @fglock Perlito5 - parser - namespace TODO - more corner cases
authored
98 $ perl -e ' $::X::::X = 3; print $main::main::X::::X ' # 3
99 $ perl -e ' $::X::::X = 3; print $main::X::main::X ' # empty
d216d0e @fglock Perlito5 - parser - namespace TODO - more corner cases
authored
100 $ perl -e ' $::X::::X = 3; print $main::X::X ' # empty
d69c95a @fglock Perlito5 - parser - namespace TODO - more corner cases
authored
101 $ perl -e ' $::X::::X = 3; print $::::X::::X ' # empty
102
bad489f @fglock Perlito5 - parser - TODO list
authored
103 -- CORE:: namespace can be used with operators:
104
105 $ perl -MO=Deparse -e ' $x CORE::and $v '
106 $v if $x;
107
108 $ perl -MO=Deparse -e ' @v = CORE::qw/ a b c / '
109 @v = ('a', 'b', 'c');
110
111 $ perl -MO=Deparse -e ' $x CORE::+ $v '
112 CORE:: is not a keyword
113
d216d0e @fglock Perlito5 - parser - namespace TODO - more corner cases
authored
114
1395266 @fglock Perlito5 - TODO update
authored
115 -- strict and warnings: create options like 'subs', 'refs'
116
94163c8 @fglock perlito5 - parser - tweak TODO list
authored
117 -- clean up:
118 the several "end_tables" in Expression.pm are duplicating the function of
119 $Precedence in Precedence.pm - Expression.pm should use $Precedence directly.
2077216 @fglock Perlito5 - add TODO
authored
120
b33a702 @fglock perlito5 - parser - TODO "things that work in perlito5, but which are er...
authored
121 -- things that work in perlito5, but which are errors in 'perl'
122
30e4683 @fglock Perlito5 - TODO update
authored
123 $ perl -e ' my @things= map { no warnings; 123 } @list; '
124 "no" not allowed in expression
125
b33a702 @fglock perlito5 - parser - TODO "things that work in perlito5, but which are er...
authored
126 quotes vs. hash lookups:
127
128 $ perl -e ' q}} '
129 # ok
130
131 $ perl -e ' $x{ q}} } '
132 Unmatched right curly bracket at -e line 1, at end of line
133
134 $ perl -e ' $x{ q]] } '
135 # ok
136
137 string interpolation with nested quotes of the same type:
138
139 $ perl -e ' " $x{"x"} " '
140 String found where operator expected at -e line 1, near "x"} ""
141
2cc1933 @fglock Perlito5 - TODO update
authored
142
95e6b6c @fglock Perlito5 - TODO cleanup
authored
143 * Add tests for fixed bugs:
144
efea5bc @fglock Perlito5 - TODO update
authored
145 ---
146 variable declarations in expressions
147
148 our $Verbose ||= 0;
149 our (%Cache);
150 my $args = @_ or @_ = @$exports;
151
95e6b6c @fglock Perlito5 - TODO cleanup
authored
152
153 ---
154 add additional variants of "for"
155
156 # "our" with localization
157 $ perl -e ' use strict; our $x = 123; for our $x (1,2,3) { 2 } print "$x\n" '
158 123
159
160 # variable in scope with localization
161 $ perl -e ' use strict; my $x = 123; for $x (1,2,3) { 2 } print "$x\n" '123
162 123
163
164
165 ---
166 add "print", "printf", "say" special parsing - note this is related to indirect object notation
167
168 indirect object notation
169 http://lwn.net/Articles/451486/
170 http://www.modernperlbooks.com/mt/2009/08/the-problems-with-indirect-object-notation.html
171 http://shadow.cat/blog/matt-s-trout/indirect-but-still-fatal/
172 http://perlbuzz.com/mechanix/2008/02/the-perils-of-perl-5s-indirect.html
173
174 method Module $param;
175 new Class( arg => $value );
176 new Class::($args);
177 say $config->{output} "This is a diagnostic message!"; # indirect call
178 say {$config->{output}} "This is a diagnostic message!"; # say to filehandle
179
180 use Class;
181 sub Class {
182 warn 'Called Class sub not Class package';
183 'Class'
184 }
185 my $q = Class->new; # calls the Class sub above
186 my $s = new Class; # throws a 'Bareword found where operator expected' error
187 my $t = Class::->new # this works
188 my $u = new Class::; # this also works (even with sub main in the current package)
189
190 sbertrang++ noted this is also valid:
191 print( STDERR "123" )
192
193
194 ---
94163c8 @fglock perlito5 - parser - tweak TODO list
authored
195 add tests for signatures: "empty" _ $ ;$
196
197 ---
caf3b30 @fglock perlito5 - parser - fix "sub _" should be in package "main"
authored
198 add test for "sub _" should be in package "main"
199 $ perl -MO=Deparse -e ' package X; sub _ { 123 } '
200 package X;
201 sub main::_ {
202 123;
203 }
204
205 ---
206 add test for defined-or vs. m// (2012/9/25 Конрад Боровски <notifications@github.com>)
207 Note: fixed; see test t5/01-perlito/25-syntax-defined-or.t
208
209 $ perl perlito5.pl -Isrc5/lib -Cast-perl5 -e ' shift // 2 '
210 Number or Bareword found where operator expected
211
212 $ perl perlito5.pl -Isrc5/lib -Cast-perl5 -e ' shift / 2 '
213 Can't find string terminator '/' anywhere before EOF
214
215 ---
216 add test for filetest operators special case:
2cc1933 @fglock Perlito5 - TODO update
authored
217 ' -f($file).".bak" ' should be equivalent to -f "$file.bak"
218 parses as -(f($file)).".bak"
219 but: ' -f ($file).".bak" '
220 parses correctly
221 This seems to be because there is a rule that \w followed by '(' is a function call;
222 this needs more testing: ' ... and(2) '
dd7a160 @fglock Perlito5 - parser: fix a bug caused by incorrect is_term state
authored
223 Test: redefine 'and', 'not' and check what works.
2cc1933 @fglock Perlito5 - TODO update
authored
224
225 ' $s111++ + $s222 '
226 parses as (+$s222)++
227
dd7a160 @fglock Perlito5 - parser: fix a bug caused by incorrect is_term state
authored
228 ' $step++ < $steps '
229 Can't find string terminator '>' anywhere before EOF
230
c701f67 @fglock Perlito5 - grammar - alfanumeric quoting delimiters
authored
231 -- from moritz, Schwern and others at
232 http://stackoverflow.com/questions/161872/hidden-features-of-perl
233
234 - you can use letters as delimiters
235
236 $ perl -Mstrict -wle 'print q bJet another perl hacker.b'
237 Jet another perl hacker.
238
239 Likewise you can write regular expressions:
240
241 m xabcx
242 # same as m/abc/
243
2cc1933 @fglock Perlito5 - TODO update
authored
244
8f67bea @fglock Perlito version 8.0
authored
245
5bb50dd @fglock Perlito5 - update TODO
authored
246 * Perl5 backend
399a3d2 @fglock Perlito5 - use scalar() instead of .elems()
authored
247
7bc739e @fglock Perlito5 - parser - add 'Perlito5::AST::Given'
authored
248 -- "given" statement not implemented
376e088 @fglock Perlito5 - TODO update
authored
249 -- "default" statement not implemented
7bc739e @fglock Perlito5 - parser - add 'Perlito5::AST::Given'
authored
250
66ec858 @fglock Perlito5 - TODO update
authored
251 -- check that \(@a) and \@a have different meanings
252
529225f @fglock Perlito5 - TODO update
authored
253 -- ${^NAME} needs curly-escaping
254
85c5759 @fglock Perlito5 - TODO update
authored
255 - fix regex delimiters, or escape the regexes
256
47374c7 @fglock Perlito5 - perl5: fix bareblock
authored
257 -- continue block in block: ' { print 1 } continue { print 2 } '
258
7a5d100 @fglock Perlito5 - perl5: document emitter bug (significant parenthesis)
authored
259 -- emitter bug: significant parenthesis:
260 t5/01-perlito/12-context.t fails because:
261 " return (4, 5) " instead of " return 4, 5 "
262
1d5cf89 @fglock Perlito5 - parser: new module Perlito5::Grammar::Sigil
authored
263 -- bug: ' $$x [$y] '
264 emits as ${$x}->[$y];
265
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
266
8f67bea @fglock Perlito version 8.0
authored
267 * Javascript backend
268
880ba6e @fglock Perlito5 - TODO update
authored
269 -- dot-decimal strings
270 5.4.66.77
271 v5.4.66.77
272
273 $ perl -e ' my $v = 5.4.66.77 ; print $v, "\n"; require $v '
274 BM
275
a80bdf6 @fglock Perlito5 - js - p5scalar_deref fix
authored
276 -- autovivification of fully-qualified array and hash globals
5a6928d @fglock Perlito5 - js - global autovivification fix
authored
277 $#{"Exporter::Cache"};
278
279 ${"Exporter::Cache"}[2] = 3;
fbb8123 @fglock Perlito5 - TODO update
authored
280
a80bdf6 @fglock Perlito5 - js - p5scalar_deref fix
authored
281 See: p5scalar_deref() / p5scalar_deref_set() in Perlito5/Javascript2/Runtime.pm
282
323e6c6 @fglock Perlito5 - TODO update
authored
283 -- pass @_ to &sub
284 $ node perlito5.js -I./src5/lib -Cjs -e ' @_ = (1,2); &foo; '
285 # call foo(@_)
286
1e00896 @fglock Perlito5 - require+version
authored
287 -- dot-decimal strings / v-strings
0b08be2 @fglock Perlito5 - TODO update
authored
288 $ perl -e ' my $v = 5.4.66.77 ; print $v, "\n"; require $v '
289 BM
290
291 -- variable declarations inside condition
292 if ((my $color = <STDIN>) =~ /red/i) {
293 $value = 0xff0000;
294 }
295 elsif ($color =~ /green/i) {
296 $value = 0x00ff00;
297 }
298 else { ... }
299
300 After the else, the $color variable is no longer in scope.
301
302 -- do {} while / do {} until
303 execute the loop once, before checking the condition
304
1e00896 @fglock Perlito5 - require+version
authored
305 -- 'require v5.006;'
306 # Can't locate v5.006 in @INC
945df32 @fglock Perlito5 - TODO update
authored
307
efea5bc @fglock Perlito5 - TODO update
authored
308 -- expressions in 'local'
945df32 @fglock Perlito5 - TODO update
authored
309 local $SIG{__WARN__};
310
4e24602 @fglock Perlito5 - TODO update
authored
311 -- assign old-self to my / local
312 local $Some_Global = $Some_Global;
313
945df32 @fglock Perlito5 - TODO update
authored
314 -- 'next', 'last' in expression
315 (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next)
316 ... ) and last
317
318 -- 'x' in list context
319 @{$cache}{@$ok} = (1) x @$ok;
21af3dc @fglock Perlito5 - js - TODO update
authored
320
321 -- '&' prototype
322 add tests; see Try::Tiny
323
324 -- AUTOLOAD() called from UNIVERSAL autovivifies packages
325 add tests
326
30e4683 @fglock Perlito5 - TODO update
authored
327 -- prototype() can be set by aliasing:
328 *x = sub ($$) { 123 }; *y = *x; print prototype(\&y) # $$
329
66ec858 @fglock Perlito5 - TODO update
authored
330 -- check that \(@a) and \@a have different meanings
331
09cc8db @fglock Perlito5 - js - add TODO for delete() special case
authored
332 -- delete() in the middle of an array turns exists() off:
333
334 $ perl -e ' @a = (3..7); delete $a[2]; print "exists ", (exists $a[$_] ? 1 : 0), "\n" for 0 .. $#a '
335 exists 1
336 exists 1
337 exists 0
338 exists 1
339 exists 1
340
3b69c4e @fglock Perlito5 - javascript - add bug: "return" and context inside eval
authored
341 -- "or" has SCALAR context (Abigail++):
25440bb @fglock Perlito5 - TODO update
authored
342 See: t5/01-perlito/23-eval.t
3b69c4e @fglock Perlito5 - javascript - add bug: "return" and context inside eval
authored
343
ecbc8f4 @fglock Perlito5 - TODO update; fix "when"
authored
344 -- "~~" operator not implemented; See also "when" implementation
345
346 -- "given" statement not implemented
376e088 @fglock Perlito5 - TODO update
authored
347 -- "when" should use a "break" exception inside "given", and a "next" exception inside "for".
ecbc8f4 @fglock Perlito5 - TODO update; fix "when"
authored
348 -- "default" statement not implemented
349
db64ad6 @fglock Perlito5 - parser: "C-style" loop
authored
350 -- bug: some declarations are not "seen":
351 for ( my $i = 0; $i < 10 ; $i++ ) { print "$i\n" } # compiles to global $i
352
bb77986 @fglock Perlito5 - parser: optimize ident() rule
authored
353 -- bug: don't emit throw() in term position; javascript requires a function() wrapper because throw() is a statement
354
9f9d0dd @fglock Perlito5 - javascript: TODO update
authored
355 -- javascript errors don't show in the global error handler when running in node.js
7a03ff4 @fglock Perlito5 - javascript: eval-block works
authored
356
e584da6 @fglock Perlito5 - javascript: TODO update
authored
357 -- "autoload" the compiler if eval-string is used (eval-string needs the compiler at run-time)
358
529225f @fglock Perlito5 - TODO update
authored
359 -- symbol variables like $] ${"main::\$"} $#_
360 -- check that @_, $_, $a, $b and other special variables are in the right context (lexical, global, package global)
361
014a584 @fglock Perlito5 - javascript: working @ISA; update Changelog, examples
authored
362 -- add alternate mro's
85c5759 @fglock Perlito5 - TODO update
authored
363 -- cache the mro
42a3449 @fglock Perlito5 - TODO update
authored
364
365 -- add regex compiler
366 -- /e modifier
d2169b7 @fglock Perlito5 - t/test.pl: use cmp_ok()
authored
367 -- /x modifier
42a3449 @fglock Perlito5 - TODO update
authored
368 -- support all perl5 regex syntax
529225f @fglock Perlito5 - TODO update
authored
369 -- @v = /x/g
42a3449 @fglock Perlito5 - TODO update
authored
370
887219b @fglock Perlito5 - javascript: work around variable redeclaration bug
authored
371 -- bug: variable redeclaration does not work
372 -- javascript "var" erases the outer value within the whole current lexical scope
42a3449 @fglock Perlito5 - TODO update
authored
373 -- bug: "my" variables - this doesn't work as expected: my $v = $v
374 possible fix: rename variables
887219b @fglock Perlito5 - javascript: work around variable redeclaration bug
authored
375
b75827a @fglock Perlito5 - TODO update
authored
376 -- lvalue ternary: ($a_or_b ? $a : $b) = $c;
377 -- lvalue substr()
378 -- 4-arguments substr()
78fd976 @fglock Perlito5 - javascript: fix 3-arguments substr()
authored
379 -- pos($str)
b44f592 @fglock Perlito5 - TODO update
authored
380 -- lvalue chomp(), chop()
78fd976 @fglock Perlito5 - javascript: fix 3-arguments substr()
authored
381
382 -- missing some types of subroutine signatures
5b56e5b @fglock Perlito5 - change javascript calling convention
authored
383
8f67bea @fglock Perlito version 8.0
authored
384 -- bug: variable aliases create copies instead
385
ce36bd0 @fglock Perlito5 - update TODO
authored
386 -- generate more compact code; maybe use more subroutines instead of inlining;
387 autovivification is probably the most verbose part of the code.
ae7ad72 @fglock Perlito5 - update docs
authored
388
7b982c3 @fglock Perlito5 - update TODO
authored
389 -- in the browser: implement "use" with XMLHttpRequest (what are the security implications?)
4b15a00 @fglock Perlito5 - cleanup parenthesis
authored
390
5bb50dd @fglock Perlito5 - update TODO
authored
391 -- add symbol tables for scalar, array and hash
1b4e7ee @fglock Perlito5 - TODO update: typeglobs
authored
392 -- references to typeglobs:
393 $ perl -e ' print ref(\*main) '
394 GLOB
395 -- aliasing between lexicals and globals
396 $ perl -e 'use strict; my $x = 3; *main::z = \$x; print $main::z; '
397 3
5bb50dd @fglock Perlito5 - update TODO
authored
398
71b0905 @fglock Perlito5 - docs update
authored
399 -- string increment and string ranges
e09904a @fglock Perlito5 - javascript: infrastructure for string increment
authored
400 See: p5str_inc()
5b56e5b @fglock Perlito5 - change javascript calling convention
authored
401
0e5b55f @fglock Perlito5 - update TODO
authored
402 -- finish "overload" implementation
403
0718f37 @fglock Perlito5 - javascript: TODO update
authored
404 -- pack(), unpack()
405 -- y()()
406
b343129 @fglock Perlito - TODO update
authored
407 -- BEGIN{} should execute in the environment of the program under compilation
88914e1 @fglock Perlito5 - TODO update
authored
408 -- BEGIN/END that are defined inside blocks/closures need to run inside some pseudo-environment
409 even if the closure was never created or used in the first place
b343129 @fglock Perlito - TODO update
authored
410
b371c5d @fglock Perlito5 - js - AUTOLOAD finished; add tests; workaround for broken boot...
authored
411 -- bug - method call context is disabled, because it breaks bootstrap.
412 in Runtime.pm:
413 function p5call(invocant, method, list, p5want) {
414 list.unshift(invocant);
415 p5want = 0; // TODO BUG - workaround for broken bootstrap
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
416
39fbeed @fglock Perlito5 - TODO update
authored
417 -- bug https://github.com/fglock/Perlito/issues/10
418 "Perlito 5 JS has syntax errors"
419
420 Tried
421
422 YUI Compressor online
423 and
424 Google Closure Compiler
425 http://closure-compiler.appspot.com/home
426
427 Both failed with syntax errors.
428
9643c62 @fglock Perlito5 - TODO update
authored
429 -- flip-flop operator
430 if either operand to scalar '..' is a constant the value is implicitly compared to the input line number ($.)
431
432 -- unary minus on strings.
433
434 my $_ = "a"
435 print -$_
436 # -a
437
e4182ba @fglock Perlito5 - TODO update
authored
438 my $foo = '-bar';
439 print $foo;
440 print -$foo;
441 # -bar+bar
442
59477ad @fglock Perlito - TODO update
authored
443
fb9190c @fglock Perlito5 - TODO update
authored
444 * Nice to Have
a7ab071 @fglock Perlito5 - add TODO
authored
445
3c87580 @fglock Perlito - TODO update
authored
446 -- debugging symbols
447 -- line numbers in error messages
448
8f60cb4 @fglock Perlito5 - TODO update
authored
449 -- caller()
450 -- "when"
465ee11 @fglock Perlito5 - TODO update
authored
451
fb9190c @fglock Perlito5 - TODO update
authored
452 -- run more of the "perl" test suite
0cc64c5 @fglock Perlito5 - kill perl6-ish "method"
authored
453
71b0905 @fglock Perlito5 - docs update
authored
454 -- proper "use strict" and "use warnings"
1b2eecc @fglock Perlito5 - use @ARGV instead of @*ARGS
authored
455 -- use the same error messages and warnings as 'perl'
42a3449 @fglock Perlito5 - TODO update
authored
456 -- no warnings 'redefine';
1b2eecc @fglock Perlito5 - use @ARGV instead of @*ARGS
authored
457
ebce10f @fglock Perlito5 - parser: add __END__, __DATA__
authored
458 -- __LINE__, __FILE__
f4910a7 @fglock Perlito5 - TODO update
authored
459
b343129 @fglock Perlito - TODO update
authored
460 -- INIT{}, END{}
461 look at the implementation in perlito6-in-Go
f4910a7 @fglock Perlito5 - TODO update
authored
462
4b15a00 @fglock Perlito5 - cleanup parenthesis
authored
463 -- source code - remove Perl 6 code such as "token"
71b0905 @fglock Perlito5 - docs update
authored
464 (fixed: This is only loaded if the grammar compiler is needed)
4b15a00 @fglock Perlito5 - cleanup parenthesis
authored
465
61d64aa @fglock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
466 -- *{ $name }{CODE}->();
467
468 -- local(*{$caller."::a"}) = \my $a;
6217752 @fglock Perlito5 - docs update
authored
469 -- *{$pkg . "::foo"} = \&bar;
61d64aa @fglock Perlito5 - parser: rewrite operator() in "perl5-land" for later tweaking
authored
470
471
9643c62 @fglock Perlito5 - TODO update
authored
472 * Oddities
473
474 -- from moritz, Schwern and others at
475 http://stackoverflow.com/questions/161872/hidden-features-of-perl
476
477 - you can give subs numeric names if you use symbolic references
478
479 $ perl -lwe '*4 = sub { print "yes" }; 4->()'
480 yes
481
c701f67 @fglock Perlito5 - grammar - alfanumeric quoting delimiters
authored
482 -- The "desperation mode" of Perl's loop control constructs which causes them to look up the stack to find a matching label allows some curious behaviors which Test::More takes advantage of, for better or worse.
9643c62 @fglock Perlito5 - TODO update
authored
483
484 SKIP: {
485 skip() if $something;
486
487 print "Never printed";
488 }
489
490 sub skip {
491 no warnings "exiting";
492 last SKIP;
493 }
494
d6cad9b @fglock Perlito5 - TODO update
authored
495
496 * Deprecate
497
498 -- remove unused features from src5/lib/Perlito5/Grammar/Regex.pm
499
500 -- Interpreter backend
501 this is not being maintained; the code is still in src5/lib/Perlito5/Eval.pm just in case
502
503 -- Perl6 backend (started)
504 this is not being maintained; not sure if compiling to Perl6 is the best way
505 maybe compiling directly to Parrot/dotnet/Haskell gives better results
506
Something went wrong with that request. Please try again.