diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 2000-01-26 21:45:41 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 2000-01-26 21:45:41 +0000 |
commit | 0120eecf48d66b2c5ac028f653ce37c6a866b26b (patch) | |
tree | 4672762c58abfd7b87c1c311161e80225991136b /lib | |
parent | 58231d3970cba2e1fc56f38812334ee802d7acf6 (diff) | |
download | perl-0120eecf48d66b2c5ac028f653ce37c6a866b26b.tar.gz |
revised attribute syntax: C<my $foo :a :b :c>, C<my $foo : a b c>
and C<my $foo : a : b : c> are all valid (from Spider Boardman)
p4raw-id: //depot/perl@4907
Diffstat (limited to 'lib')
-rw-r--r-- | lib/AutoSplit.pm | 6 | ||||
-rw-r--r-- | lib/SelfLoader.pm | 4 | ||||
-rw-r--r-- | lib/attributes.pm | 15 |
3 files changed, 13 insertions, 12 deletions
diff --git a/lib/AutoSplit.pm b/lib/AutoSplit.pm index 936edc4758..41d5489531 100644 --- a/lib/AutoSplit.pm +++ b/lib/AutoSplit.pm @@ -10,7 +10,7 @@ use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Verbose, $Keep, $Maxlen, $CheckForAutoloader, $CheckModTime); -$VERSION = "1.0304"; +$VERSION = "1.0305"; @ISA = qw(Exporter); @EXPORT = qw(&autosplit &autosplit_lib_modules); @EXPORT_OK = qw($Verbose $Keep $Maxlen $CheckForAutoloader $CheckModTime); @@ -149,7 +149,7 @@ my $Is_VMS = ($^O eq 'VMS'); # allow checking for valid ': attrlist' attachments my $nested; $nested = qr{ \( (?: (?> [^()]+ ) | (?p{ $nested }) )* \) }x; -my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) [\s,]* }x; +my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x; my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x; @@ -468,5 +468,5 @@ package Yet::Another::AutoSplit; sub testtesttesttest4_1 ($) { "another test 4\n"; } sub testtesttesttest4_2 ($$) { "another duplicate test 4\n"; } package Yet::More::Attributes; -sub test_a1 ($) : locked { 1; } +sub test_a1 ($) : locked :locked { 1; } sub test_a2 : locked { 1; } diff --git a/lib/SelfLoader.pm b/lib/SelfLoader.pm index 4672ac49da..2aa29303fd 100644 --- a/lib/SelfLoader.pm +++ b/lib/SelfLoader.pm @@ -3,7 +3,7 @@ package SelfLoader; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(AUTOLOAD); -$VERSION = "1.09"; +$VERSION = "1.0901"; sub Version {$VERSION} $DEBUG = 0; @@ -12,7 +12,7 @@ my %Cache; # private cache for all SelfLoader's client packages # allow checking for valid ': attrlist' attachments my $nested; $nested = qr{ \( (?: (?> [^()]+ ) | (?p{ $nested }) )* \) }x; -my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) [\s,]* }x; +my $one_attr = qr{ (?> (?! \d) \w+ (?:$nested)? ) (?:\s*\:\s*|\s+(?!\:)) }x; my $attr_list = qr{ \s* : \s* (?: $one_attr )* }x; sub croak { require Carp; goto &Carp::croak } diff --git a/lib/attributes.pm b/lib/attributes.pm index 09f355139f..bbbb8b78ee 100644 --- a/lib/attributes.pm +++ b/lib/attributes.pm @@ -1,6 +1,6 @@ package attributes; -$VERSION = 0.02; +$VERSION = 0.03; @EXPORT_OK = qw(get reftype); @EXPORT = (); @@ -54,7 +54,7 @@ sub import { my $s = ((@pkgattrs == 1) ? '' : 's'); carp "$svtype package attribute$s " . "may clash with future reserved word$s: " . - join(' , ' , @pkgattrs); + join(' : ' , @pkgattrs); } } } @@ -65,7 +65,7 @@ sub import { croak "Invalid $svtype attribute" . (( @badattrs == 1 ) ? '' : 's') . ": " . - join(' , ', @badattrs); + join(' : ', @badattrs); } } @@ -267,7 +267,8 @@ will use that package name. =head2 Syntax of Attribute Lists An attribute list is a sequence of attribute specifications, separated by -whitespace, commas, or both. Each attribute specification is a simple +whitespace or a colon (with optional whitespace). +Each attribute specification is a simple name, optionally followed by a parenthesised parameter list. If such a parameter list is present, it is scanned past as for the rules for the C<q()> operator. (See L<perlop/"Quote and Quote-like Operators">.) @@ -275,8 +276,8 @@ The parameter list is passed as it was found, however, and not as per C<q()>. Some examples of syntactically valid attribute lists: - switch(10,foo(7,3)) , , expensive - Ugly('\(") , Bad + switch(10,foo(7,3)) : expensive + Ugly('\(") :Bad _5x5 locked method @@ -286,7 +287,7 @@ Some examples of syntactically invalid attribute lists (with annotation): Ugly('(') # ()-string not balanced 5x5 # "5x5" not a valid identifier Y2::north # "Y2::north" not a simple identifier - foo + bar # "+" neither a comma nor whitespace + foo + bar # "+" neither a colon nor whitespace =head1 EXPORTS |