Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Moving files around for a more generic module
- Loading branch information
Kieren Diment
committed
Jan 11, 2009
1 parent
6bbb7f1
commit 10c0afe
Showing
16 changed files
with
195 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,194 @@ | ||
package Data::PerlSurvey2007; | ||
|
||
use warnings; | ||
use strict; | ||
|
||
=head1 NAME | ||
|
||
Data::PerlSurvey2007 - Data results and simple code for the results of Perl Survey 2007 | ||
|
||
=head1 VERSION | ||
|
||
Version 1.00 | ||
|
||
=cut | ||
|
||
our $VERSION = '1.00'; | ||
|
||
our @columns; | ||
|
||
|
||
=head1 SYNOPSIS | ||
|
||
Now you can do your own analyses of the data from Perl Survey 2007. | ||
|
||
use Data::PerlSurvey2007; | ||
|
||
my @responses = Data::PerlSurvey2007::read_responses( 'results.csv' ); | ||
|
||
Each element of the responses coming back is a hashref that looks like this | ||
|
||
{ | ||
'Attended Perl Mongers' => '1', | ||
'Attended Perl Mongers (non-local)' => '0', | ||
'Attended conference' => '1', | ||
'Attended conference (non-local)' => '0', | ||
'CPAN modules maintained' => '12', | ||
'Contributed to CPAN' => '1', | ||
'Contributed to Perl 5' => '0', | ||
'Contributed to Perl 6' => '0', | ||
'Contributed to other projects' => '1', | ||
'Contributed to websites' => '1', | ||
'Country of birth' => 'au', | ||
'Country of residence' => 'au', | ||
'Date survey completed' => '2007-07-26 12:49:37', | ||
'ID' => '25', | ||
'Income' => '80000-89999', | ||
'Industry/ies' => [ | ||
'Internet', | ||
'Real Estate' | ||
], | ||
'Led other projects' => '1', | ||
'Other programming languages known' => [], | ||
'Perl versions' => [ | ||
'5.005', | ||
'5.6.1', | ||
'5.8.4', | ||
'5.8.5', | ||
'5.8.8' | ||
], | ||
'Perlmonks' => '0', | ||
'Platforms' => [ | ||
'BSD - FreeBSD', | ||
'Linux - Debian', | ||
'Linux - Ubuntu', | ||
'Mac OS/X', | ||
'Windows XP' | ||
], | ||
'Posted to Perl Mongers list' => '1', | ||
'Posted to other list' => '1', | ||
'Presented at conference' => '1', | ||
'Primary language spoken' => 'English', | ||
'Programming languages known' => [ | ||
'JavaScript', | ||
'MOO', | ||
'PHP', | ||
'Ruby' | ||
], | ||
'Proportion of Perl' => '90', | ||
'Provided feedback' => '1', | ||
'Sex' => 'female', | ||
'Subscribed to Perl Mongers list' => '1', | ||
'Subscribed to other list' => '1', | ||
'Year of birth' => '1975', | ||
'Years programming (total)' => '22', | ||
'Years programming Perl' => '11' | ||
}, | ||
|
||
=head1 FUNCTIONS | ||
|
||
=head2 read_responses( $filename ) | ||
|
||
Reads in the responses from F<$filename> and returns an array of them. | ||
|
||
=cut | ||
|
||
sub read_responses { | ||
my $filename = shift; | ||
|
||
my @responses = (); | ||
|
||
open( my $fh, '<', $filename ) or die "Unable to read $filename: $!\n"; | ||
while ( <$fh> ) { | ||
chomp; | ||
next if /^#/ || !/./; | ||
|
||
my @fields = split_csv( $_ ); | ||
my $nfields = @fields; | ||
$nfields == 34 or die "I need 34 fields, but line $. has $nfields"; | ||
if ( @columns ) { | ||
my %response; | ||
|
||
# Turn the multi-value responses into arrayrefs | ||
for my $col ( 7, 10, 11, 13, 14 ) { | ||
$fields[$col] = [ split( /\s*;\s*/, $fields[$col] ) ]; | ||
} | ||
@response{ @columns } = @fields; | ||
push( @responses, \%response ); | ||
} | ||
else { | ||
@columns = @fields; | ||
} | ||
} | ||
return @responses; | ||
} | ||
|
||
|
||
=head2 split_csv( $str ) | ||
|
||
Split the CSV fields into individual columns, and get rid of the quotes. | ||
|
||
=cut | ||
|
||
sub split_csv { | ||
my $str = shift; | ||
|
||
my @cols = ( $str =~ /(?:^|,)("(?:[^"]+|"")*"|[^,]*)/g ); | ||
|
||
s/^"(.*)"$/$1/ for @cols; | ||
|
||
return @cols; | ||
} | ||
|
||
=head1 AUTHOR | ||
|
||
Andy Lester, C<< <andy at petdance.com> >> | ||
|
||
=head1 BUGS | ||
|
||
Please report any bugs or feature requests to | ||
C<bug-data-perlsurvey2007 at rt.cpan.org>, or through the web interface at | ||
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-PerlSurvey2007>. | ||
I will be notified, and then you'll automatically be notified of progress on | ||
your bug as I make changes. | ||
|
||
=head1 SUPPORT | ||
|
||
You can find documentation for this module with the perldoc command. | ||
|
||
perldoc Data::PerlSurvey2007 | ||
|
||
You can also look for information at: | ||
|
||
=over 4 | ||
|
||
=item * AnnoCPAN: Annotated CPAN documentation | ||
|
||
L<http://annocpan.org/dist/Data-PerlSurvey2007> | ||
|
||
=item * CPAN Ratings | ||
|
||
L<http://cpanratings.perl.org/d/Data-PerlSurvey2007> | ||
|
||
=item * RT: CPAN's request tracker | ||
|
||
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Data-PerlSurvey2007> | ||
|
||
=item * Search CPAN | ||
|
||
L<http://search.cpan.org/dist/Data-PerlSurvey2007> | ||
|
||
=back | ||
|
||
=head1 ACKNOWLEDGEMENTS | ||
|
||
=head1 COPYRIGHT & LICENSE | ||
|
||
Copyright 2007 Andy Lester, all rights reserved. | ||
|
||
This program is free software; you can redistribute it and/or modify it | ||
under the same terms as Perl itself. | ||
|
||
=cut | ||
|
||
1; # End of Data::PerlSurvey2007 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
kd@fenchurch.local.166 |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.