aboutsummaryrefslogtreecommitdiff
path: root/textproc/p5-Perl-Critic/pkg-plist
blob: a8171b2594f996d11b9e323621685401d55f0ee4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
bin/perlcritic
%%SITE_PERL%%/Perl/Critic.pm
%%SITE_PERL%%/Perl/Critic/Annotation.pm
%%SITE_PERL%%/Perl/Critic/CORE_DEVELOPER.pod
%%SITE_PERL%%/Perl/Critic/Command.pm
%%SITE_PERL%%/Perl/Critic/Config.pm
%%SITE_PERL%%/Perl/Critic/DEVELOPER.pod
%%SITE_PERL%%/Perl/Critic/Document.pm
%%SITE_PERL%%/Perl/Critic/Exception.pm
%%SITE_PERL%%/Perl/Critic/Exception/AggregateConfiguration.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Generic.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/NonExistentPolicy.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Global.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Global/ExtraParameter.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Global/ParameterValue.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Policy.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Policy/ExtraParameter.pm
%%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Policy/ParameterValue.pm
%%SITE_PERL%%/Perl/Critic/Exception/Fatal.pm
%%SITE_PERL%%/Perl/Critic/Exception/Fatal/Generic.pm
%%SITE_PERL%%/Perl/Critic/Exception/Fatal/Internal.pm
%%SITE_PERL%%/Perl/Critic/Exception/Fatal/PolicyDefinition.pm
%%SITE_PERL%%/Perl/Critic/Exception/IO.pm
%%SITE_PERL%%/Perl/Critic/Exception/Parse.pm
%%SITE_PERL%%/Perl/Critic/OptionsProcessor.pm
%%SITE_PERL%%/Perl/Critic/Policy.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitBooleanGrep.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitComplexMappings.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitLvalueSubstr.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitReverseSortBlock.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitSleepViaSelect.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitStringyEval.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitStringySplit.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitUniversalCan.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitUniversalIsa.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitVoidGrep.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/ProhibitVoidMap.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/RequireBlockGrep.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/RequireBlockMap.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/RequireGlobFunction.pm
%%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions/RequireSimpleSortBlock.pm
%%SITE_PERL%%/Perl/Critic/Policy/ClassHierarchies/ProhibitAutoloading.pm
%%SITE_PERL%%/Perl/Critic/Policy/ClassHierarchies/ProhibitExplicitISA.pm
%%SITE_PERL%%/Perl/Critic/Policy/ClassHierarchies/ProhibitOneArgBless.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/ProhibitHardTabs.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/ProhibitParensWithBuiltins.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/ProhibitQuotedWordLists.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/ProhibitTrailingWhitespace.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/RequireConsistentNewlines.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/RequireTidyCode.pm
%%SITE_PERL%%/Perl/Critic/Policy/CodeLayout/RequireTrailingCommas.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitCStyleForLoops.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitCascadingIfElse.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitDeepNests.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitLabelsWithSpecialBlockNames.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitMutatingListFunctions.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitNegativeExpressionsInUnlessAndUntilConditions.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitPostfixControls.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitUnlessBlocks.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitUnreachableCode.pm
%%SITE_PERL%%/Perl/Critic/Policy/ControlStructures/ProhibitUntilBlocks.pm
%%SITE_PERL%%/Perl/Critic/Policy/Documentation/PodSpelling.pm
%%SITE_PERL%%/Perl/Critic/Policy/Documentation/RequirePackageMatchesPodName.pm
%%SITE_PERL%%/Perl/Critic/Policy/Documentation/RequirePodAtEnd.pm
%%SITE_PERL%%/Perl/Critic/Policy/Documentation/RequirePodLinksIncludeText.pm
%%SITE_PERL%%/Perl/Critic/Policy/Documentation/RequirePodSections.pm
%%SITE_PERL%%/Perl/Critic/Policy/ErrorHandling/RequireCarping.pm
%%SITE_PERL%%/Perl/Critic/Policy/ErrorHandling/RequireCheckingReturnValueOfEval.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitBacktickOperators.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitBarewordFileHandles.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitExplicitStdin.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitInteractiveTest.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitJoinedReadline.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitOneArgSelect.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitReadlineInForLoop.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/ProhibitTwoArgOpen.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/RequireBracedFileHandleWithPrint.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/RequireBriefOpen.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/RequireCheckedClose.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/RequireCheckedOpen.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/RequireCheckedSyscalls.pm
%%SITE_PERL%%/Perl/Critic/Policy/InputOutput/RequireEncodingWithUTF8Layer.pm
%%SITE_PERL%%/Perl/Critic/Policy/Miscellanea/ProhibitFormats.pm
%%SITE_PERL%%/Perl/Critic/Policy/Miscellanea/ProhibitTies.pm
%%SITE_PERL%%/Perl/Critic/Policy/Miscellanea/ProhibitUnrestrictedNoCritic.pm
%%SITE_PERL%%/Perl/Critic/Policy/Miscellanea/ProhibitUselessNoCritic.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/ProhibitAutomaticExportation.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/ProhibitConditionalUseStatements.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/ProhibitEvilModules.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/ProhibitExcessMainComplexity.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/ProhibitMultiplePackages.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/RequireBarewordIncludes.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/RequireEndWithOne.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/RequireExplicitPackage.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/RequireFilenameMatchesPackage.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/RequireNoMatchVarsWithUseEnglish.pm
%%SITE_PERL%%/Perl/Critic/Policy/Modules/RequireVersionVar.pm
%%SITE_PERL%%/Perl/Critic/Policy/NamingConventions/Capitalization.pm
%%SITE_PERL%%/Perl/Critic/Policy/NamingConventions/ProhibitAmbiguousNames.pm
%%SITE_PERL%%/Perl/Critic/Policy/Objects/ProhibitIndirectSyntax.pm
%%SITE_PERL%%/Perl/Critic/Policy/References/ProhibitDoubleSigils.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitCaptureWithoutTest.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitComplexRegexes.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitEnumeratedClasses.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitEscapedMetacharacters.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitFixedStringMatches.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitSingleCharAlternation.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitUnusedCapture.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/ProhibitUnusualDelimiters.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/RequireBracesForMultiline.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/RequireDotMatchAnything.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/RequireExtendedFormatting.pm
%%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions/RequireLineBoundaryMatching.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitAmpersandSigils.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitBuiltinHomonyms.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitExcessComplexity.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitExplicitReturnUndef.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitManyArgs.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitNestedSubs.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitReturnSort.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitSubroutinePrototypes.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProhibitUnusedPrivateSubroutines.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/ProtectPrivateSubs.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/RequireArgUnpacking.pm
%%SITE_PERL%%/Perl/Critic/Policy/Subroutines/RequireFinalReturn.pm
%%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging/ProhibitNoStrict.pm
%%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging/ProhibitNoWarnings.pm
%%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging/ProhibitProlongedStrictureOverride.pm
%%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging/RequireTestLabels.pm
%%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging/RequireUseStrict.pm
%%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging/RequireUseWarnings.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitCommaSeparatedStatements.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitComplexVersion.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitConstantPragma.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitEmptyQuotes.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitEscapedCharacters.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitImplicitNewlines.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitInterpolationOfLiterals.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitLeadingZeros.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitLongChainsOfMethodCalls.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitMagicNumbers.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitMismatchedOperators.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitMixedBooleanOperators.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitNoisyQuotes.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitQuotesAsQuotelikeOperatorDelimiters.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitSpecialLiteralHeredocTerminator.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/ProhibitVersionStrings.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/RequireConstantVersion.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/RequireInterpolationOfMetachars.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/RequireNumberSeparators.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/RequireQuotedHeredocTerminator.pm
%%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions/RequireUpperCaseHeredocTerminator.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitAugmentedAssignmentInDeclaration.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitConditionalDeclarations.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitEvilVariables.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitLocalVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitMatchVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitPackageVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitPerl4PackageNames.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitPunctuationVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitReusedNames.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProhibitUnusedVariables.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/ProtectPrivateVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/RequireInitializationForLocalVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/RequireLexicalLoopIterators.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/RequireLocalizedPunctuationVars.pm
%%SITE_PERL%%/Perl/Critic/Policy/Variables/RequireNegativeIndices.pm
%%SITE_PERL%%/Perl/Critic/PolicyConfig.pm
%%SITE_PERL%%/Perl/Critic/PolicyFactory.pm
%%SITE_PERL%%/Perl/Critic/PolicyListing.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior/Boolean.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior/Enumeration.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior/Integer.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior/String.pm
%%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior/StringList.pm
%%SITE_PERL%%/Perl/Critic/PolicySummary.pod
%%SITE_PERL%%/Perl/Critic/ProfilePrototype.pm
%%SITE_PERL%%/Perl/Critic/Statistics.pm
%%SITE_PERL%%/Perl/Critic/TestUtils.pm
%%SITE_PERL%%/Perl/Critic/Theme.pm
%%SITE_PERL%%/Perl/Critic/ThemeListing.pm
%%SITE_PERL%%/Perl/Critic/UserProfile.pm
%%SITE_PERL%%/Perl/Critic/Utils.pm
%%SITE_PERL%%/Perl/Critic/Utils/Constants.pm
%%SITE_PERL%%/Perl/Critic/Utils/DataConversion.pm
%%SITE_PERL%%/Perl/Critic/Utils/McCabe.pm
%%SITE_PERL%%/Perl/Critic/Utils/POD.pm
%%SITE_PERL%%/Perl/Critic/Utils/POD/ParseInteriorSequence.pm
%%SITE_PERL%%/Perl/Critic/Utils/PPI.pm
%%SITE_PERL%%/Perl/Critic/Utils/Perl.pm
%%SITE_PERL%%/Perl/Critic/Violation.pm
%%SITE_PERL%%/Test/Perl/Critic/Policy.pm
@dirrmtry %%SITE_PERL%%/Test/Perl/Critic
@dirrmtry %%SITE_PERL%%/Test/Perl
@dirrmtry %%SITE_PERL%%/Test
@dirrmtry %%SITE_PERL%%/Perl/Critic/Utils/POD
@dirrmtry %%SITE_PERL%%/Perl/Critic/Utils
@dirrmtry %%SITE_PERL%%/Perl/Critic/PolicyParameter/Behavior
@dirrmtry %%SITE_PERL%%/Perl/Critic/PolicyParameter
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/Variables
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/ValuesAndExpressions
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/TestingAndDebugging
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/Subroutines
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/RegularExpressions
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/References
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/Objects
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/NamingConventions
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/Modules
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/Miscellanea
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/InputOutput
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/ErrorHandling
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/Documentation
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/ControlStructures
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/CodeLayout
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/ClassHierarchies
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy/BuiltinFunctions
@dirrmtry %%SITE_PERL%%/Perl/Critic/Policy
@dirrmtry %%SITE_PERL%%/Perl/Critic/Exception/Fatal
@dirrmtry %%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Policy
@dirrmtry %%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option/Global
@dirrmtry %%SITE_PERL%%/Perl/Critic/Exception/Configuration/Option
@dirrmtry %%SITE_PERL%%/Perl/Critic/Exception/Configuration
@dirrmtry %%SITE_PERL%%/Perl/Critic/Exception
@dirrmtry %%SITE_PERL%%/Perl/Critic
@dirrmtry %%SITE_PERL%%/Perl