Newer Older
439 lines | 9.317kb
packaging one directory
yuki-kimoto authored on 2009-11-16
1
package DBIx::Custom::Result;
update document
yuki-kimoto authored on 2009-11-17
2

            
packaging one directory
yuki-kimoto authored on 2009-11-16
3
use strict;
4
use warnings;
update document
yuki-kimoto authored on 2010-01-30
5

            
6
use base 'Object::Simple';
cleanup
yuki-kimoto authored on 2010-02-11
7

            
packaging one directory
yuki-kimoto authored on 2009-11-16
8
use Carp 'croak';
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
9
use DBIx::Custom::Util;
packaging one directory
yuki-kimoto authored on 2009-11-16
10

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
11
__PACKAGE__->attr(
12
    [qw/filters sth/],
13
    stash => sub { {} }
14
);
cleanup
Yuki Kimoto authored on 2010-12-21
15

            
16
sub filter {
17
    my $self = shift;
cleanup
Yuki Kimoto authored on 2010-12-22
18
    
19
    if (@_) {
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
20
        my $filter = {};
cleanup
Yuki Kimoto authored on 2010-12-22
21
        
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
22
        if (ref $_[0] eq 'HASH') {
23
            $filter = $_[0];
24
        }
25
        else {
26
            $filter = DBIx::Custom::Util::array_filter_to_hash(
27
                @_ > 1 ? [@_] : $_[0]
28
            );
29
        }
30
                
cleanup
Yuki Kimoto authored on 2010-12-22
31
        foreach my $column (keys %$filter) {
32
            my $fname = $filter->{$column};
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
33

            
34
            if  (exists $filter->{$column}
35
              && defined $fname
36
              && ref $fname ne 'CODE') 
37
            {
many changed
Yuki Kimoto authored on 2011-01-23
38
              croak qq{Filter "$fname" is not registered"}
cleanup
Yuki Kimoto authored on 2010-12-22
39
                unless exists $self->filters->{$fname};
40
              
41
              $filter->{$column} = $self->filters->{$fname};
42
            }
cleanup
Yuki Kimoto authored on 2010-12-21
43
        }
cleanup
Yuki Kimoto authored on 2010-12-22
44
        
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
45
        $self->{filter} = {%{$self->filter}, %$filter};
cleanup
Yuki Kimoto authored on 2010-12-22
46
        
47
        return $self;
cleanup
Yuki Kimoto authored on 2010-12-21
48
    }
49
    
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
50
    return $self->{filter} ||= {};
51
}
52

            
53
sub end_filter {
54
    my $self = shift;
55
    
56
    if (@_) {
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
57
        my $end_filter = {};
58
        
59
        if (ref $_[0] eq 'HASH') {
60
            $end_filter = $_[0];
61
        }
62
        else {
63
            $end_filter = DBIx::Custom::Util::array_filter_to_hash(
64
                @_ > 1 ? [@_] : $_[0]
65
            );
66
        }
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
67
        
68
        foreach my $column (keys %$end_filter) {
69
            my $fname = $end_filter->{$column};
fix bug : filter can't over...
Yuki Kimoto authored on 2011-02-09
70
            
71
            if  (exists $end_filter->{$column}
72
              && defined $fname
73
              && ref $fname ne 'CODE') 
74
            {
many changed
Yuki Kimoto authored on 2011-01-23
75
              croak qq{Filter "$fname" is not registered"}
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
76
                unless exists $self->filters->{$fname};
77
              
78
              $end_filter->{$column} = $self->filters->{$fname};
79
            }
80
        }
81
        
82
        $self->{end_filter} = {%{$self->end_filter}, %$end_filter};
83
        
84
        return $self;
85
    }
86
    
87
    return $self->{end_filter} ||= {};
cleanup
Yuki Kimoto authored on 2010-12-21
88
}
cleanup
yuki-kimoto authored on 2010-01-21
89

            
packaging one directory
yuki-kimoto authored on 2009-11-16
90
sub fetch {
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
91
    my $self = shift;
92
    
cleanup
Yuki Kimoto authored on 2011-01-12
93
    # Filter
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
94
    my $filter = $self->filter;
95
    
96
    # End filter
97
    my $end_filter = $self->end_filter;
packaging one directory
yuki-kimoto authored on 2009-11-16
98
    
99
    # Fetch
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
100
    my @row = $self->{sth}->fetchrow_array;
packaging one directory
yuki-kimoto authored on 2009-11-16
101
    
cleanup
yuki-kimoto authored on 2010-08-05
102
    # No row
update document
yuki-kimoto authored on 2010-05-27
103
    return unless @row;
added check_filter attribute
yuki-kimoto authored on 2010-08-08
104
    
cleanup
yuki-kimoto authored on 2010-08-05
105
    # Filtering
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
106
    my $columns = $self->{sth}->{NAME};
cleanup
yuki-kimoto authored on 2010-08-05
107
    for (my $i = 0; $i < @$columns; $i++) {
update document
yuki-kimoto authored on 2010-05-27
108
        
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
109
        # Filter name
cleanup
yuki-kimoto authored on 2010-08-05
110
        my $column = $columns->[$i];
cleanup
Yuki Kimoto authored on 2010-12-21
111
        my $f  = exists $filter->{$column}
112
               ? $filter->{$column}
cleanup
Yuki Kimoto authored on 2010-12-22
113
               : $self->default_filter;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
114
        my $ef = $end_filter->{$column};
some changed
yuki-kimoto authored on 2010-05-02
115
        
cleanup
yuki-kimoto authored on 2010-08-05
116
        # Filtering
cleanup
Yuki Kimoto authored on 2010-12-21
117
        $row[$i] = $f->($row[$i]) if $f;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
118
        $row[$i] = $ef->($row[$i]) if $ef;
packaging one directory
yuki-kimoto authored on 2009-11-16
119
    }
many many changes
yuki-kimoto authored on 2010-04-30
120

            
removed reconnect method
yuki-kimoto authored on 2010-05-28
121
    return \@row;
122
}
123

            
cleanup
yuki-kimoto authored on 2010-10-17
124
sub fetch_all {
125
    my $self = shift;
126
    
127
    # Fetch all rows
128
    my $rows = [];
129
    while(my $row = $self->fetch) {
130
        push @$rows, $row;
131
    }
132
    return $rows;
133
}
134

            
removed reconnect method
yuki-kimoto authored on 2010-05-28
135
sub fetch_first {
136
    my $self = shift;
137
    
138
    # Fetch
139
    my $row = $self->fetch;
140
    
cleanup
yuki-kimoto authored on 2010-08-05
141
    # No row
removed reconnect method
yuki-kimoto authored on 2010-05-28
142
    return unless $row;
143
    
144
    # Finish statement handle
145
    $self->sth->finish;
146
    
147
    return $row;
148
}
149

            
packaging one directory
yuki-kimoto authored on 2009-11-16
150
sub fetch_hash {
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
151
    my $self = shift;
152
    
cleanup
Yuki Kimoto authored on 2011-01-12
153
    # Filter
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
154
    my $filter  = $self->filter;
155
    
156
    # End filter
157
    my $end_filter = $self->end_filter;
packaging one directory
yuki-kimoto authored on 2009-11-16
158
    
159
    # Fetch
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
160
    my $row = $self->{sth}->fetchrow_arrayref;
packaging one directory
yuki-kimoto authored on 2009-11-16
161
    
162
    # Cannot fetch
163
    return unless $row;
added check_filter attribute
yuki-kimoto authored on 2010-08-08
164

            
packaging one directory
yuki-kimoto authored on 2009-11-16
165
    # Filter
166
    my $row_hash = {};
added experimental iterate_a...
Yuki Kimoto authored on 2010-12-22
167
    my $columns = $self->{sth}->{NAME};
cleanup
yuki-kimoto authored on 2010-08-05
168
    for (my $i = 0; $i < @$columns; $i++) {
update document
yuki-kimoto authored on 2010-05-27
169
        
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
170
        # Filter name
cleanup
yuki-kimoto authored on 2010-08-05
171
        my $column = $columns->[$i];
cleanup
Yuki Kimoto authored on 2010-12-21
172
        my $f  = exists $filter->{$column}
173
               ? $filter->{$column}
cleanup
Yuki Kimoto authored on 2010-12-22
174
               : $self->default_filter;
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
175
        my $ef = $end_filter->{$column};
add query filter error check
yuki-kimoto authored on 2010-05-14
176
        
cleanup
yuki-kimoto authored on 2010-08-05
177
        # Filtering
cleanup
Yuki Kimoto authored on 2010-12-21
178
        $row_hash->{$column} = $f ? $f->($row->[$i]) : $row->[$i];
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
179
        $row_hash->{$column} = $ef->($row_hash->{$column}) if $ef;
packaging one directory
yuki-kimoto authored on 2009-11-16
180
    }
181
    
removed reconnect method
yuki-kimoto authored on 2010-05-28
182
    return $row_hash;
packaging one directory
yuki-kimoto authored on 2009-11-16
183
}
184

            
cleanup
yuki-kimoto authored on 2010-10-17
185
sub fetch_hash_all {
186
    my $self = shift;
187
    
188
    # Fetch all rows as hash
189
    my $rows = [];
190
    while(my $row = $self->fetch_hash) {
191
        push @$rows, $row;
192
    }
193
    
194
    return $rows;
195
}
196

            
removed reconnect method
yuki-kimoto authored on 2010-05-28
197
sub fetch_hash_first {
packaging one directory
yuki-kimoto authored on 2009-11-16
198
    my $self = shift;
199
    
200
    # Fetch hash
201
    my $row = $self->fetch_hash;
202
    
cleanup
yuki-kimoto authored on 2010-08-05
203
    # No row
packaging one directory
yuki-kimoto authored on 2009-11-16
204
    return unless $row;
205
    
206
    # Finish statement handle
some changed
yuki-kimoto authored on 2010-05-02
207
    $self->sth->finish;
packaging one directory
yuki-kimoto authored on 2009-11-16
208
    
removed reconnect method
yuki-kimoto authored on 2010-05-28
209
    return $row;
packaging one directory
yuki-kimoto authored on 2009-11-16
210
}
211

            
renamed fetch_rows to fetch_...
yuki-kimoto authored on 2010-05-01
212
sub fetch_hash_multi {
packaging one directory
yuki-kimoto authored on 2009-11-16
213
    my ($self, $count) = @_;
214
    
cleanup
yuki-kimoto authored on 2010-08-05
215
    # Row count not specified
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
216
    croak 'Row count must be specified'
packaging one directory
yuki-kimoto authored on 2009-11-16
217
      unless $count;
218
    
219
    # Fetch multi rows
220
    my $rows = [];
221
    for (my $i = 0; $i < $count; $i++) {
removed reconnect method
yuki-kimoto authored on 2010-05-28
222
        my $row = $self->fetch_hash;
223
        last unless $row;
224
        push @$rows, $row;
packaging one directory
yuki-kimoto authored on 2009-11-16
225
    }
226
    
227
    return unless @$rows;
removed reconnect method
yuki-kimoto authored on 2010-05-28
228
    return $rows;
packaging one directory
yuki-kimoto authored on 2009-11-16
229
}
230

            
cleanup
yuki-kimoto authored on 2010-10-17
231
sub fetch_multi {
232
    my ($self, $count) = @_;
packaging one directory
yuki-kimoto authored on 2009-11-16
233
    
cleanup
yuki-kimoto authored on 2010-10-17
234
    # Row count not specifed
235
    croak 'Row count must be specified'
236
      unless $count;
237
    
238
    # Fetch multi rows
packaging one directory
yuki-kimoto authored on 2009-11-16
239
    my $rows = [];
cleanup
yuki-kimoto authored on 2010-10-17
240
    for (my $i = 0; $i < $count; $i++) {
241
        my $row = $self->fetch;
242
        last unless $row;
removed reconnect method
yuki-kimoto authored on 2010-05-28
243
        push @$rows, $row;
packaging one directory
yuki-kimoto authored on 2009-11-16
244
    }
changed argument of tag proc...
yuki-kimoto authored on 2010-08-03
245
    
cleanup
yuki-kimoto authored on 2010-10-17
246
    return unless @$rows;
removed reconnect method
yuki-kimoto authored on 2010-05-28
247
    return $rows;
packaging one directory
yuki-kimoto authored on 2009-11-16
248
}
249

            
cleanup
Yuki Kimoto authored on 2011-01-12
250
# Deprecated
251
sub default_filter {
252
    my $self = shift;
253
    
254
    if (@_) {
255
        my $fname = $_[0];
256
        if (@_ && !$fname) {
257
            $self->{default_filter} = undef;
258
        }
259
        else {
many changed
Yuki Kimoto authored on 2011-01-23
260
            croak qq{Filter "$fname" is not registered}
cleanup
Yuki Kimoto authored on 2011-01-12
261
              unless exists $self->filters->{$fname};
262
        
263
            $self->{default_filter} = $self->filters->{$fname};
264
        }
265
        
266
        return $self;
267
    }
268
    
269
    return $self->{default_filter};
270
}
271

            
cleanup
Yuki Kimoto authored on 2011-01-23
272
# DEPRECATED!
273
__PACKAGE__->attr('filter_check'); 
274

            
update document
yuki-kimoto authored on 2010-01-30
275
1;
276

            
packaging one directory
yuki-kimoto authored on 2009-11-16
277
=head1 NAME
278

            
cleanup
yuki-kimoto authored on 2010-08-05
279
DBIx::Custom::Result - Result of select statement
packaging one directory
yuki-kimoto authored on 2009-11-16
280

            
update document
yuki-kimoto authored on 2010-01-30
281
=head1 SYNOPSIS
cleanup
yuki-kimoto authored on 2010-08-05
282

            
283
Get the result of select statement.
284

            
removed reconnect method
yuki-kimoto authored on 2010-05-28
285
    # Result
286
    my $result = $dbi->select(table => 'books');
cleanup
yuki-kimoto authored on 2010-08-05
287

            
288
Fetch row into array.
removed reconnect method
yuki-kimoto authored on 2010-05-28
289
    
290
    # Fetch a row into array
291
    while (my $row = $result->fetch) {
cleanup
yuki-kimoto authored on 2010-08-05
292
        my $author = $row->[0];
293
        my $title  = $row->[1];
removed reconnect method
yuki-kimoto authored on 2010-05-28
294
        
version 0.0901
yuki-kimoto authored on 2009-12-17
295
    }
296
    
cleanup
yuki-kimoto authored on 2010-08-05
297
    # Fetch only a first row into array
removed reconnect method
yuki-kimoto authored on 2010-05-28
298
    my $row = $result->fetch_first;
299
    
300
    # Fetch multiple rows into array of array
301
    while (my $rows = $result->fetch_multi(5)) {
cleanup
yuki-kimoto authored on 2010-08-05
302
        my $first_author  = $rows->[0][0];
303
        my $first_title   = $rows->[0][1];
304
        my $second_author = $rows->[1][0];
305
        my $second_value  = $rows->[1][1];
306
    
removed reconnect method
yuki-kimoto authored on 2010-05-28
307
    }
308
    
309
    # Fetch all rows into array of array
310
    my $rows = $result->fetch_all;
cleanup
yuki-kimoto authored on 2010-08-05
311

            
312
Fetch row into hash.
313

            
314
    # Fetch a row into hash
removed reconnect method
yuki-kimoto authored on 2010-05-28
315
    while (my $row = $result->fetch_hash) {
cleanup
yuki-kimoto authored on 2010-08-05
316
        my $title  = $row->{title};
317
        my $author = $row->{author};
removed reconnect method
yuki-kimoto authored on 2010-05-28
318
        
packaging one directory
yuki-kimoto authored on 2009-11-16
319
    }
removed reconnect method
yuki-kimoto authored on 2010-05-28
320
    
cleanup
yuki-kimoto authored on 2010-08-05
321
    # Fetch only a first row into hash
removed reconnect method
yuki-kimoto authored on 2010-05-28
322
    my $row = $result->fetch_hash_first;
323
    
324
    # Fetch multiple rows into array of hash
cleanup
yuki-kimoto authored on 2010-08-05
325
    while (my $rows = $result->fetch_hash_multi(5)) {
326
        my $first_title   = $rows->[0]{title};
327
        my $first_author  = $rows->[0]{author};
328
        my $second_title  = $rows->[1]{title};
329
        my $second_author = $rows->[1]{author};
removed reconnect method
yuki-kimoto authored on 2010-05-28
330
    }
331
    
332
    # Fetch all rows into array of hash
333
    my $rows = $result->fetch_hash_all;
packaging one directory
yuki-kimoto authored on 2009-11-16
334

            
update document
yuki-kimoto authored on 2010-01-30
335
=head1 ATTRIBUTES
packaging one directory
yuki-kimoto authored on 2009-11-16
336

            
cleanup
yuki-kimoto authored on 2010-08-05
337
Filters when a row is fetched.
338
This overwrites C<default_filter>.
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
339

            
cleanup
yuki-kimoto authored on 2010-10-17
340
=head2 C<filters>
341

            
342
    my $filters = $result->filters;
343
    $result     = $result->filters(\%filters);
344

            
345
Resistered filters.
346

            
347
=head2 C<sth>
348

            
349
    my $sth = $reuslt->sth
350
    $result = $result->sth($sth);
351

            
352
Statement handle of L<DBI>.
353

            
update document
yuki-kimoto authored on 2010-01-30
354
=head1 METHODS
355

            
renamed build_query to creat...
yuki-kimoto authored on 2010-08-06
356
L<DBIx::Custom::Result> inherits all methods from L<Object::Simple>
cleanup
yuki-kimoto authored on 2010-08-05
357
and implements the following new ones.
packaging one directory
yuki-kimoto authored on 2009-11-16
358

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
359
=head2 C<(experimental) end_filter>
360

            
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
361
    $result = $result->end_filter(title  => 'to_something',
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
362
                                     author => 'to_something');
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
363

            
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
364
    $result = $result->end_filter([qw/title author/] => 'to_something');
365

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
366
End filters.
367
These each filters is executed after the filters applied by C<apply_filter> of
368
L<DBIx::Custom> or C<filter> method.
369

            
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
370
=head2 C<fetch>
packaging one directory
yuki-kimoto authored on 2009-11-16
371

            
cleanup
yuki-kimoto authored on 2010-08-05
372
    my $row = $result->fetch;
version 0.0901
yuki-kimoto authored on 2009-12-17
373

            
cleanup
yuki-kimoto authored on 2010-08-05
374
Fetch a row into array.
packaging one directory
yuki-kimoto authored on 2009-11-16
375

            
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
376
=head2 C<fetch_all>
packaging one directory
yuki-kimoto authored on 2009-11-16
377

            
cleanup
yuki-kimoto authored on 2010-08-05
378
    my $rows = $result->fetch_all;
version 0.0901
yuki-kimoto authored on 2009-12-17
379

            
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
380
Fetch all rows into array of array.
packaging one directory
yuki-kimoto authored on 2009-11-16
381

            
cleanup
yuki-kimoto authored on 2010-10-17
382
=head2 C<fetch_first>
383

            
384
    my $row = $result->fetch_first;
385

            
386
Fetch only a first row into array and finish statment handle.
387

            
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
388
=head2 C<fetch_hash>
packaging one directory
yuki-kimoto authored on 2009-11-16
389

            
cleanup
yuki-kimoto authored on 2010-08-05
390
    my $row = $result->fetch_hash;
packaging one directory
yuki-kimoto authored on 2009-11-16
391

            
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
392
Fetch a row into hash
update document
yuki-kimoto authored on 2009-11-19
393

            
cleanup
yuki-kimoto authored on 2010-10-17
394
=head2 C<fetch_hash_all>
395

            
396
    my $rows = $result->fetch_hash_all;
397

            
398
Fetch all rows into array of hash.
399

            
removed DBIx::Custom commit ...
yuki-kimoto authored on 2010-07-14
400
=head2 C<fetch_hash_first>
removed reconnect method
yuki-kimoto authored on 2010-05-28
401
    
cleanup
yuki-kimoto authored on 2010-08-05
402
    my $row = $result->fetch_hash_first;
packaging one directory
yuki-kimoto authored on 2009-11-16
403

            
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
404
Fetch only first row into hash and finish statment handle.
packaging one directory
yuki-kimoto authored on 2009-11-16
405

            
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
406
=head2 C<fetch_hash_multi>
update document
yuki-kimoto authored on 2009-11-19
407

            
cleanup
yuki-kimoto authored on 2010-08-05
408
    my $rows = $result->fetch_hash_multi(5);
update document
yuki-kimoto authored on 2009-11-19
409
    
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
410
Fetch multiple rows into array of hash
cleanup
yuki-kimoto authored on 2010-08-05
411
Row count must be specified.
update document
yuki-kimoto authored on 2009-11-19
412

            
cleanup
yuki-kimoto authored on 2010-10-17
413
=head2 C<fetch_multi>
packaging one directory
yuki-kimoto authored on 2009-11-16
414

            
cleanup
yuki-kimoto authored on 2010-10-17
415
    my $rows = $result->fetch_multi(5);
416
    
417
Fetch multiple rows into array of array.
418
Row count must be specified.
removed DESTROY method(not b...
yuki-kimoto authored on 2010-07-18
419

            
cleanup
Yuki Kimoto authored on 2010-12-21
420
=head2 C<filter>
421

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
422
    $result = $result->filter(title  => 'to_something',
423
                              author => 'to_something');
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
424

            
all filter can receive array...
Yuki Kimoto authored on 2011-02-25
425
    $result = $result->filter([qw/title author/] => 'to_something');
426

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-17
427
Filters.
428
These each filters override the filters applied by C<apply_filter> of
429
L<DBIx::Custom>.
cleanup
Yuki Kimoto authored on 2010-12-21
430

            
added experimental DBIx::Cus...
Yuki Kimoto authored on 2011-01-25
431
=head2 C<(experimental) stash>
432

            
433
    my $stash = $result->stash;
434
    my $foo = $result->stash->{foo};
435
    $result->stash->{foo} = $foo;
436

            
437
Stash is hash reference to save your data.
438

            
packaging one directory
yuki-kimoto authored on 2009-11-16
439
=cut