NAME
Scalar::MultiValue - Create a SCALAR with multiple values.
DESCRIPTION
This module create a SCALAR with multiple values, where this values can be randomic or can change by a defined period.
USAGE
With a period of 2:
my $s = new Scalar::MultiValue( [qw(a b c d)] , 2 ) ;
for(0..8) {
print "$s\n" ;
}
Output:
a
a
b
b
c
c
d
d
With randomic values:
my $s = new Scalar::MultiValue( [qw(a b c d)] , '*' ) ;
for(0..8) {
print "$s\n" ;
}
Output:
c
d
c
b
a
d
c
c
NEW (LIST , PERIOD)
The arguments of new are a LIST and the PERIOD (optional):
- LIST
-
Can be a ARRAYREF or a string that will be splited by /\s/, like on qw():
## this is the same my $s = new Scalar::MultiValue( 'a b c d' ) ; ## of that: my $s = new Scalar::MultiValue( [qw(a b c d)] ) ;
- PERIOD
-
The PERIOD can be a integer value, that will define how many times a value will be repeated before change to the next value. PERIOD also can be '*', that will change randomically the values.
SETTING THE VALUES
You can use the scalar as a ARRAYREF and set it's values
my $s = new Scalar::MultiValue( 'a b c d' ) ;
Redefining a single value:
$$s[0] = 'A' ;
Redefining all the values:
@$s = qw(w x y z) ;
METHODS
last()
Return the last value (without change the internal counter).
reset()
Reset the internal counter for the PERIOD.
period(VAL)
Return the period or define it when VAL is defined.
ATTRIBUTES
From version 0.03 you also can access the values of the methods above as an attributes (HASH key):
my $colors = new Scalar::MultiValue('#CCCCCC #999999') ;
print "<font color='$colors'>Main Color</font>\n" ;
print "<font color='$colors->{last}'>Previous Color</font>\n" ;
EXAMPLE
A common example of use for this module is for multiple colors on a table:
use Scalar::MultiValue ;
my $colors = new Scalar::MultiValue('#CCCCCC #999999') ;
my @users = qw(a b c d) ;
print "<table>\n" ;
foreach my $users_i ( @users ) {
print "<tr><td bgcolor='$colors'>$users_i</td></tr>\n" ;
}
print "</table>\n" ;
Output:
<table>
<tr><td bgcolor='#CCCCCC'>a</td></tr>
<tr><td bgcolor='#999999'>b</td></tr>
<tr><td bgcolor='#CCCCCC'>c</td></tr>
<tr><td bgcolor='#999999'>d</td></tr>
</table>
SEE ALSO
AUTHOR
Graciliano M. P. <gmpassos@cpan.org>
I will appreciate any type of feedback (include your opinions and/or suggestions). ;-P
COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.