annotate getUniqSV.pl @ 1:4f6952e0af48 default tip

CREST - add crest.loc.sample
author Jim Johnson <jj@umn.edu>
date Wed, 08 Feb 2012 16:08:01 -0600
parents acc8d8bfeb9a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
1 #!/nfs_exports/apps/64-bit/gnu-apps/perl5.8.9/bin/perl -w
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
2
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
3 use strict;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
4 use Carp;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
5 use Getopt::Long;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
6 use English;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
7 use Pod::Usage;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
8 use Data::Dumper;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
9 use DBI;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
10 use DBD::mysql;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
11
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
12 my $db = 'hg18';
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
13 my $port = 3306;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
14 my $host = '10.4.19.125';
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
15 my $USER = "sjXuser";
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
16
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
17 my ( $help, $man, $version, $usage );
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
18 my ($in, $normal, $out);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
19 my $optionOK = GetOptions(
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
20 'd|i|in|input=s' => \$in,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
21 'g|normal=s' => \$normal,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
22 'o|out|output=s' => \$out,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
23 'h|help|?' => \$help,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
24 'man' => \$man,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
25 'usage' => \$usage,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
26 'v|version' => \$version,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
27 );
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
28
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
29 pod2usage(2) if($man);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
30 pod2usage( -verbose => 99, -sections => "USAGE|REQUIRED ARGUMENTS|OPTIONS" )
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
31 if($help or $usage);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
32 pod2usage( -verbose => 99, -sections => "VERSION") if($version);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
33
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
34 croak "Missing input file" if(!$in);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
35 open STDOUT, ">$out" if($out);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
36 open my $IN, "<$in" or croak "can't open $in: $OS_ERROR";
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
37 open my $NORMAL, "<$normal" or croak "can't open $normal: $OS_ERROR" if($normal);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
38
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
39 my $dbh = DBI->connect("dbi:mysql:$db:$host:$port", $USER) or
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
40 die "Can't connect to MySQL database: $DBI::errstr\n";
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
41
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
42 my @SV;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
43 my @normal_SV;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
44 if($normal) {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
45 while(my $line = <$NORMAL>) {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
46 chomp $line;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
47 my ($chrA, $posA, $ortA, $countA, $chrB, $posB, $ortB, $countB, $type) = split /\t/, $line;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
48 next if( search_sv(\@normal_SV, $chrA, $posA, $chrB, $posB, $type));
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
49 push @normal_SV, [$chrA, $posA, $chrB, $posB, $type];
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
50 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
51 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
52 while( my $line = <$IN> ) {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
53 chomp $line;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
54 my ($chrA, $posA, $ortA, $countA, $chrB, $posB, $ortB, $countB, $type) = split /\t/, $line;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
55 next if( search_sv(\@normal_SV, $chrA, $posA, $chrB, $posB, $type)); # the SV exists in normal sample
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
56 push @normal_SV, [$chrA, $posA, $chrB, $posB, $type];
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
57 print STDOUT $line;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
58 if($type eq 'DEL') {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
59 my $tmp = get_gene_info($chrA, $posA, $posB);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
60 print STDOUT "\t", $tmp if($tmp);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
61 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
62 else {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
63 print STDOUT "\t", get_gene_info($chrA, $posA, $posA);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
64 print STDOUT "\t", get_gene_info($chrB, $posB, $posB);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
65 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
66 print STDOUT "\n";
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
67 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
68 close $IN;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
69 close STDOUT if($out);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
70 $dbh->disconnect;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
71 exit(0);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
72
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
73 sub search_sv {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
74 my ($r_SV, $chrA, $posA, $chrB, $posB, $type) = @_;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
75
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
76 foreach my $sv (@{$r_SV}) {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
77 return 1 if( $sv->[0] eq $chrA && abs($sv->[1] - $posA) < 20 &&
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
78 $sv->[2] eq $chrB && abs($sv->[3] - $posB) < 20 && $sv->[4] eq $type);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
79 return 1 if( $sv->[0] eq $chrB && abs($sv->[1] - $posB) < 20 &&
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
80 $sv->[2] eq $chrA && abs($sv->[3] - $posA) < 20 && $sv->[4] eq $type);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
81 return 1 if( $sv->[0] eq $chrA && abs($sv->[1] - $posA) < 100 &&
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
82 $sv->[2] eq $chrB && abs($sv->[3] - $posB) < 100 && $sv->[4] eq $type && $type eq 'CTX');
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
83 return 1 if( $sv->[0] eq $chrB && abs($sv->[1]- $posB) < 100 &&
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
84 $sv->[2] eq $chrA && abs($sv->[3] - $posA) < 100 && $sv->[4] eq $type && $type eq 'CTX');
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
85 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
86 return;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
87 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
88
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
89 sub get_gene_info {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
90 my ($chr, $st, $ed) = @_;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
91 $chr = 'chr' . $chr if($chr !~ m/chr/);
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
92 my $rtn="";
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
93 my $sth = $dbh->prepare("select distinct geneName
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
94 from refFlat
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
95 where (chrom = '$chr' AND $ed >= txStart AND $st <= txEnd)
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
96 order by txStart"
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
97 );
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
98 $sth->execute();
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
99 my $tbl_ref = $sth->fetchall_arrayref();
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
100 foreach my $r (@{$tbl_ref}) {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
101 if($rtn eq '') {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
102 $rtn = $r->[0];
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
103 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
104 else {
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
105 $rtn = $rtn . ", " . $r->[0];
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
106 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
107 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
108 return $rtn;
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
109 }
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
110 =head1 NAME
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
111
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
112 <application name> - <One-line description of application's purpose>
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
113
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
114
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
115 =head1 VERSION
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
116
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
117 The initial template usually just has:
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
118
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
119 This documentation refers to <application name> version 0.0.1.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
120
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
121
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
122 =head1 USAGE
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
123
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
124 # Brief working invocation example(s) here showing the most common usage(s)
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
125
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
126 # This section will be as far as many users ever read,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
127 # so make it as educational and exemplary as possible.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
128 =head1 REQUIRED ARGUMENTS
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
129
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
130 A complete list of every argument that must appear on the command line.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
131 when the application is invoked, explaining what each of them does, any
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
132 restrictions on where each one may appear (i.e., flags that must appear
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
133 before or after filenames), and how the various arguments and options
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
134 may interact (e.g., mutual exclusions, required combinations, etc.)
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
135
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
136 If all of the application's arguments are optional, this section
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
137 may be omitted entirely.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
138
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
139 =head1 OPTIONS
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
140
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
141 A complete list of every available option with which the application
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
142 can be invoked, explaining what each does, and listing any restrictions,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
143 or interactions.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
144
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
145 If the application has no options, this section may be omitted entirely.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
146
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
147
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
148 =head1 DESCRIPTION
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
149
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
150 A full description of the application and its features.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
151 May include numerous subsections (i.e., =head2, =head3, etc.).
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
152
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
153
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
154 =head1 DIAGNOSTICS
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
155
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
156 A list of every error and warning message that the application can generate
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
157 (even the ones that will "never happen"), with a full explanation of each
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
158 problem, one or more likely causes, and any suggested remedies. If the
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
159 application generates exit status codes (e.g., under Unix), then list the exit
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
160 status associated with each error.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
161
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
162 =head1 CONFIGURATION AND ENVIRONMENT
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
163
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
164 A full explanation of any configuration system(s) used by the application,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
165 including the names and locations of any configuration files, and the
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
166 meaning of any environment variables or properties that can be set. These
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
167 descriptions must also include details of any configuration language used.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
168
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
169
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
170 =head1 DEPENDENCIES
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
171
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
172 A list of all the other modules that this module relies upon, including any
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
173 restrictions on versions, and an indication of whether these required modules are
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
174 part of the standard Perl distribution, part of the module's distribution,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
175 or must be installed separately.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
176
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
177
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
178 =head1 INCOMPATIBILITIES
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
179
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
180 A list of any modules that this module cannot be used in conjunction with.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
181 This may be due to name conflicts in the interface, or competition for
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
182 system or program resources, or due to internal limitations of Perl
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
183 (for example, many modules that use source code filters are mutually
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
184 incompatible).
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
185
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
186
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
187 =head1 BUGS AND LIMITATIONS
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
188
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
189 A list of known problems with the module, together with some indication of
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
190 whether they are likely to be fixed in an upcoming release.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
191
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
192 Also a list of restrictions on the features the module does provide:
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
193 data types that cannot be handled, performance issues and the circumstances
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
194 in which they may arise, practical limitations on the size of data sets,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
195 special cases that are not (yet) handled, etc.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
196
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
197 The initial template usually just has:
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
198
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
199 There are no known bugs in this module.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
200 Please report problems to <Maintainer name(s)> (<contact address>)
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
201 Patches are welcome.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
202
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
203 =head1 AUTHOR
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
204
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
205 <Author name(s)> (<contact address>)
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
206
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
207
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
208
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
209 =head1 LICENCE AND COPYRIGHT
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
210
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
211 Copyright (c) <year> <copyright holder> (<contact address>). All rights reserved.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
212
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
213 followed by whatever licence you wish to release it under.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
214 For Perl code that is often just:
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
215
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
216 This module is free software; you can redistribute it and/or
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
217 modify it under the same terms as Perl itself. See L<perlartistic>.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
218
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
219 This program is distributed in the hope that it will be useful,
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
220 but WITHOUT ANY WARRANTY; without even the implied warranty of
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
221 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
acc8d8bfeb9a Uploaded
jjohnson
parents:
diff changeset
222