xref: /OpenGrok/opengrok-indexer/src/test/resources/sources/perl/main.pl (revision 2bcacabbe843448903326d34ff21a265b5f37596)
1*2bcacabbSAdam Hornacek#!/usr/bin/perl
2*2bcacabbSAdam Hornacek
3*2bcacabbSAdam Hornacek#
4*2bcacabbSAdam Hornacek# CDDL HEADER START
5*2bcacabbSAdam Hornacek#
6*2bcacabbSAdam Hornacek# The contents of this file are subject to the terms of the
7*2bcacabbSAdam Hornacek# Common Development and Distribution License (the "License").
8*2bcacabbSAdam Hornacek# You may not use this file except in compliance with the License.
9*2bcacabbSAdam Hornacek#
10*2bcacabbSAdam Hornacek# See LICENSE.txt included in this distribution for the specific
11*2bcacabbSAdam Hornacek# language governing permissions and limitations under the License.
12*2bcacabbSAdam Hornacek#
13*2bcacabbSAdam Hornacek# When distributing Covered Code, include this CDDL HEADER in each
14*2bcacabbSAdam Hornacek# file and include the License file at LICENSE.txt.
15*2bcacabbSAdam Hornacek# If applicable, add the following below this CDDL HEADER, with the
16*2bcacabbSAdam Hornacek# fields enclosed by brackets "[]" replaced with your own identifying
17*2bcacabbSAdam Hornacek# information: Portions Copyright [yyyy] [name of copyright owner]
18*2bcacabbSAdam Hornacek#
19*2bcacabbSAdam Hornacek# CDDL HEADER END
20*2bcacabbSAdam Hornacek#
21*2bcacabbSAdam Hornacek
22*2bcacabbSAdam Hornacek#
23*2bcacabbSAdam Hornacek# Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
24*2bcacabbSAdam Hornacek# Portions Copyright (c) 2017, Chris Fraire <cfraire@me.com>.
25*2bcacabbSAdam Hornacek#
26*2bcacabbSAdam Hornacek
27*2bcacabbSAdam Hornacekuse warnings;
28*2bcacabbSAdam Hornacek
29*2bcacabbSAdam Hornacek   use DBI;
30*2bcacabbSAdam Hornacek
31*2bcacabbSAdam Hornacek   my $database='dbi:DB2:sample';
32*2bcacabbSAdam Hornacek   my $user='';
33*2bcacabbSAdam Hornacek   my $password='';
34*2bcacabbSAdam Hornacek
35*2bcacabbSAdam Hornacek   my $dbh = DBI->connect($database, $user, $password)
36*2bcacabbSAdam Hornacek      or die "Can't connect to $database: $DBI::errstr";
37*2bcacabbSAdam Hornacek
38*2bcacabbSAdam Hornacek   my $sth = $dbh->prepare(
39*2bcacabbSAdam Hornacek      q{ SELECT firstnme, lastname
40*2bcacabbSAdam Hornacek         FROM employee }
41*2bcacabbSAdam Hornacek      )
42*2bcacabbSAdam Hornacek      or die "Can't prepare statement: $DBI::errstr";
43*2bcacabbSAdam Hornacek
44*2bcacabbSAdam Hornacek   my $rc = $sth->execute
45*2bcacabbSAdam Hornacek      or die "Can't execute statement: $DBI::errstr";
46*2bcacabbSAdam Hornacek
47*2bcacabbSAdam Hornacek   print "Query will return $sth->{NUM_OF_FIELDS} fields.\n\n";
48*2bcacabbSAdam Hornacek   print "$sth->{NAME}->[0]: $sth->{NAME}->[1]\n";
49*2bcacabbSAdam Hornacek
50*2bcacabbSAdam Hornacek   while (($firstnme, $lastname) = $sth->fetchrow()) {
51*2bcacabbSAdam Hornacek      print "$firstnme: $lastname\n";
52*2bcacabbSAdam Hornacek   }
53*2bcacabbSAdam Hornacek
54*2bcacabbSAdam Hornacek   # check for problems which may have terminated the fetch early
55*2bcacabbSAdam Hornacek   warn $DBI::errstr if $DBI::err;
56*2bcacabbSAdam Hornacek
57*2bcacabbSAdam Hornacek   $sth->finish;
58*2bcacabbSAdam Hornacek   $dbh->disconnect;
59*2bcacabbSAdam Hornacek
60*2bcacabbSAdam Hornacek=item snazzle($)
61*2bcacabbSAdam Hornacek
62*2bcacabbSAdam HornacekThe snazzle() function will behave in the most spectacular
63*2bcacabbSAdam Hornacekform that you can possibly imagine, not even excepting
64*2bcacabbSAdam Hornacekcybernetic pyrotechnics.
65*2bcacabbSAdam Hornacek
66*2bcacabbSAdam Hornacek=cut back to the compiler, nuff of this pod stuff!
67*2bcacabbSAdam Hornacek
68*2bcacabbSAdam Hornaceksub snazzle($) {
69*2bcacabbSAdam Hornacekmy $thingie = shift;
70*2bcacabbSAdam Hornacek}
71*2bcacabbSAdam Hornacek
72*2bcacabbSAdam Hornacekmy $x;
73*2bcacabbSAdam Hornacek$x=12345;              # integer
74*2bcacabbSAdam Hornacek$x=-54321;             # negative integer
75*2bcacabbSAdam Hornacek$x=12345.67;           # floating point
76*2bcacabbSAdam Hornacek$x=6.02E23;            # scientific notation
77*2bcacabbSAdam Hornacek$x=0xffff;             # hexadecimal
78*2bcacabbSAdam Hornacek$x=0377;               # octal
79*2bcacabbSAdam Hornacek$x=4_294_967_296;      # underline for legibility
80*2bcacabbSAdam Hornacek
81*2bcacabbSAdam Hornacek#
82*2bcacabbSAdam Hornacek# The following should be marked-up in the same manner as for all sigiled
83*2bcacabbSAdam Hornacek# identifiers.
84*2bcacabbSAdam Hornacek#
85*2bcacabbSAdam Hornacek$s = $var;
86*2bcacabbSAdam Hornacek$s = \$var;
87*2bcacabbSAdam Hornacek$s = ${var};
88*2bcacabbSAdam Hornacek
89*2bcacabbSAdam Hornacek#
90*2bcacabbSAdam Hornacek# include "<<EOF" examples from
91*2bcacabbSAdam Hornacek# https://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators
92*2bcacabbSAdam Hornacek#
93*2bcacabbSAdam Hornacek
94*2bcacabbSAdam Hornacekprint <<EOF;
95*2bcacabbSAdam HornacekThe price is $Price.
96*2bcacabbSAdam HornacekEOF
97*2bcacabbSAdam Hornacekprint << "EOF"; # same as above
98*2bcacabbSAdam HornacekThe price is $Price.
99*2bcacabbSAdam HornacekEOF
100*2bcacabbSAdam Hornacek
101*2bcacabbSAdam Hornacekmy $cost = <<'VISTA';  # hasta la ...
102*2bcacabbSAdam HornacekThat'll be $10 please, ma'am.
103*2bcacabbSAdam HornacekVISTA
104*2bcacabbSAdam Hornacek$cost = <<\VISTA;   # Same thing!
105*2bcacabbSAdam HornacekThat'll be $10 please, ma'am.
106*2bcacabbSAdam HornacekVISTA
107*2bcacabbSAdam Hornacek
108*2bcacabbSAdam Hornacekprint << `EOC`; # execute command and get results
109*2bcacabbSAdam Hornacekecho hi there
110*2bcacabbSAdam HornacekEOC
111*2bcacabbSAdam Hornacek
112*2bcacabbSAdam Hornacekif ($some_var) {
113*2bcacabbSAdam Hornacek	print <<~EOF;
114*2bcacabbSAdam Hornacek	This is a here-doc
115*2bcacabbSAdam Hornacek	EOF
116*2bcacabbSAdam Hornacek}
117*2bcacabbSAdam Hornacek
118*2bcacabbSAdam Hornacekprint <<~EOF;
119*2bcacabbSAdam Hornacek	This text is not indented
120*2bcacabbSAdam Hornacek	This text is indented with two spaces
121*2bcacabbSAdam Hornacek		This text is indented with two tabs
122*2bcacabbSAdam HornacekEOF
123*2bcacabbSAdam Hornacek
124*2bcacabbSAdam Hornacekprint <<~ 'EOF';
125*2bcacabbSAdam Hornacek	This text is not indented
126*2bcacabbSAdam Hornacek	This text is indented with two spaces
127*2bcacabbSAdam Hornacek		This text is indented with two tabs
128*2bcacabbSAdam HornacekEOF
129*2bcacabbSAdam Hornacek
130*2bcacabbSAdam Hornacekprint <<"foo", <<"bar"; # you can stack them
131*2bcacabbSAdam HornacekI said foo.
132*2bcacabbSAdam Hornacekfoo
133*2bcacabbSAdam HornacekI said bar.
134*2bcacabbSAdam Hornacekbar
135*2bcacabbSAdam Hornacek
136*2bcacabbSAdam Hornacekmyfunc(<< "THIS", 23, <<'THAT');
137*2bcacabbSAdam HornacekHere's a line or
138*2bcacabbSAdam Hornacektwo
139*2bcacabbSAdam HornacekTHIS
140*2bcacabbSAdam Hornacekand here's another.
141*2bcacabbSAdam HornacekTHAT
142*2bcacabbSAdam Hornacek
143*2bcacabbSAdam Hornacek#
144*2bcacabbSAdam Hornacek# Include some samples for the shortcut // syntax of m//
145*2bcacabbSAdam Hornacek#
146*2bcacabbSAdam Hornacek
147*2bcacabbSAdam Hornacek$var =~ /pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./ && print;
148*2bcacabbSAdam Hornacek$var !~/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./ && print;
149*2bcacabbSAdam Hornacek/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./ && print;
150*2bcacabbSAdam Hornacek(/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./) && print;
151*2bcacabbSAdam Hornacekif (/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./) { print; }
152*2bcacabbSAdam Hornacekif (1 && /pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./) { print; }
153*2bcacabbSAdam Hornacekif (0 || /pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./) { print; }
154*2bcacabbSAdam Hornacekprint or/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
155*2bcacabbSAdam Hornacekprint if /pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
156*2bcacabbSAdam Hornacekprint unless
157*2bcacabbSAdam Hornacek
158*2bcacabbSAdam Hornacek
159*2bcacabbSAdam Hornacek	/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
160*2bcacabbSAdam Hornacek
161*2bcacabbSAdam Hornacekmy @o = $contents =~
162*2bcacabbSAdam Hornacek
163*2bcacabbSAdam Hornacek
164*2bcacabbSAdam Hornacek    /^(?>\S+) \s* := \s* LINKSRC \s* = \s* \S+/mxg;
165*2bcacabbSAdam Hornacek
166*2bcacabbSAdam Hornacekforeach my $v (@o) { # This loop shouldn't mistakenly be inside the previous m//
167*2bcacabbSAdam Hornacek	print $v;
168*2bcacabbSAdam Hornacek}
169*2bcacabbSAdam Hornacek
170*2bcacabbSAdam Hornacek#
171*2bcacabbSAdam Hornacek# The following table is from
172*2bcacabbSAdam Hornacek# https://perldoc.perl.org/perlop.html#Quote-and-Quote-like-Operators .
173*2bcacabbSAdam Hornacek# The samples following are generated per the table.
174*2bcacabbSAdam Hornacek#
175*2bcacabbSAdam Hornacek#	Customary Generic     Meaning	     Interpolates
176*2bcacabbSAdam Hornacek#	''	 q{}	      Literal		  no
177*2bcacabbSAdam Hornacek#	""	qq{}	      Literal		  yes
178*2bcacabbSAdam Hornacek#	``	qx{}	      Command		  yes*
179*2bcacabbSAdam Hornacek#		qw{}	     Word list		  no
180*2bcacabbSAdam Hornacek#	//	 m{}	   Pattern match	  yes*
181*2bcacabbSAdam Hornacek#		qr{}	      Pattern		  yes*
182*2bcacabbSAdam Hornacek#		 s{}{}	    Substitution	  yes*
183*2bcacabbSAdam Hornacek#		tr{}{}	  Transliteration	  no (but see below)
184*2bcacabbSAdam Hornacek#		 y{}{}
185*2bcacabbSAdam Hornacek#
186*2bcacabbSAdam Hornacek
187*2bcacabbSAdam Hornacek$s = 'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.';
188*2bcacabbSAdam Hornacek$s = q{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.};
189*2bcacabbSAdam Hornacek$s = q[pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.];
190*2bcacabbSAdam Hornacek$s = q(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.);
191*2bcacabbSAdam Hornacek$s = q<pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.>;
192*2bcacabbSAdam Hornacek$s = q/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
193*2bcacabbSAdam Hornacek$s = q zpP \"\'\(\)\<\>\{\}\[\]\/\# et $var.z;
194*2bcacabbSAdam Hornacek$s = q#pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#;
195*2bcacabbSAdam Hornacek$s = q'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.';
196*2bcacabbSAdam Hornacek$s = q"pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.";
197*2bcacabbSAdam Hornacek$s = "pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.";
198*2bcacabbSAdam Hornacek$s = qq{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.};
199*2bcacabbSAdam Hornacek$s = qq[pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.];
200*2bcacabbSAdam Hornacek$s = qq(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.);
201*2bcacabbSAdam Hornacek$s = qq<pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.>;
202*2bcacabbSAdam Hornacek$s = qq/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
203*2bcacabbSAdam Hornacek$s = qq zpP \"\'\(\)\<\>\{\}\[\]\/\# et $var.z;
204*2bcacabbSAdam Hornacek$s = qq#pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#;
205*2bcacabbSAdam Hornacek$s = qq'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.';
206*2bcacabbSAdam Hornacek$s = qq"pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.";
207*2bcacabbSAdam Hornacek$s = `pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.`;
208*2bcacabbSAdam Hornacek$s = qx{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.};
209*2bcacabbSAdam Hornacek$s = qx[pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.];
210*2bcacabbSAdam Hornacek$s = qx(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.);
211*2bcacabbSAdam Hornacek$s = qx<pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.>;
212*2bcacabbSAdam Hornacek$s = qx/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
213*2bcacabbSAdam Hornacek$s = qx zpP \"\'\(\)\<\>\{\}\[\]\/\# et $var.z;
214*2bcacabbSAdam Hornacek$s = qx#pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#;
215*2bcacabbSAdam Hornacek$s = qx'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.';
216*2bcacabbSAdam Hornacek$s = qx"pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.";
217*2bcacabbSAdam Hornacekuse vars qw{$Cannot %embed &punctuation *here @except $sigils};
218*2bcacabbSAdam Hornacekuse vars qw[$Cannot %embed &punctuation *here @except $sigils];
219*2bcacabbSAdam Hornacekuse vars qw($Cannot %embed &punctuation *here @except $sigils);
220*2bcacabbSAdam Hornacekuse vars qw<$Cannot %embed &punctuation *here @except $sigils>;
221*2bcacabbSAdam Hornacekuse vars qw/$Cannot %embed &punctuation *here @except $sigils/;
222*2bcacabbSAdam Hornacekuse vars qw z$Cannot %embed &punctuation *here @except $sigilsz;
223*2bcacabbSAdam Hornacekuse vars qw#$Cannot %embed &punctuation *here @except $sigils#;
224*2bcacabbSAdam Hornacekuse vars qw'$Cannot %embed &punctuation *here @except $sigils';
225*2bcacabbSAdam Hornacekuse vars qw"$Cannot %embed &punctuation *here @except $sigils";
226*2bcacabbSAdam Hornacek$s = /pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
227*2bcacabbSAdam Hornacek$s = m{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.};
228*2bcacabbSAdam Hornacek$s = m[pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.];
229*2bcacabbSAdam Hornacek$s = m(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.);
230*2bcacabbSAdam Hornacek$s = m<pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.>;
231*2bcacabbSAdam Hornacek$s = m/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
232*2bcacabbSAdam Hornacek$s = m zpP \"\'\(\)\<\>\{\}\[\]\/\# et $var.z;
233*2bcacabbSAdam Hornacek$s = m#pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#;
234*2bcacabbSAdam Hornacek$s = m'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.';
235*2bcacabbSAdam Hornacek$s = m"pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.";
236*2bcacabbSAdam Hornacek$s = qr{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.};
237*2bcacabbSAdam Hornacek$s = qr[pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.];
238*2bcacabbSAdam Hornacek$s = qr(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.);
239*2bcacabbSAdam Hornacek$s = qr<pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.>;
240*2bcacabbSAdam Hornacek$s = qr/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./;
241*2bcacabbSAdam Hornacek$s = qr zpP \"\'\(\)\<\>\{\}\[\]\/\# et $var.z;
242*2bcacabbSAdam Hornacek$s = qr#pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#;
243*2bcacabbSAdam Hornacek$s = qr'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.';
244*2bcacabbSAdam Hornacek$s = qr"pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.";
245*2bcacabbSAdam Hornacek$s = s{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.
246*2bcacabbSAdam Hornacek    }{pP {{nest}}\"\'\(\)\<\>\[\]\/\# et $var.}x;
247*2bcacabbSAdam Hornacek$s = s[pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.
248*2bcacabbSAdam Hornacek    ][pP [[nest]]\"\'\(\)\<\>\{\}\/\# et $var.]x;
249*2bcacabbSAdam Hornacek$s = s(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.
250*2bcacabbSAdam Hornacek    )(pP ((nest))\"\'\<\>\{\}\[\]\/\# et $var.)x;
251*2bcacabbSAdam Hornacek$s = s<pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.
252*2bcacabbSAdam Hornacek    ><pP <<nest>>\"\'\(\)\{\}\[\]\/\# et $var.>x;
253*2bcacabbSAdam Hornacek$s = s/pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./
254*2bcacabbSAdam Hornacek    pP \"\'\(\)\<\>\{\}\[\]\/\# et $var./x;
255*2bcacabbSAdam Hornacek$s = s zpP \"\'\(\)\<\>\{\}\[\]\/\# et $var.z
256*2bcacabbSAdam Hornacek    pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.zx;
257*2bcacabbSAdam Hornacek$s = s#pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#
258*2bcacabbSAdam Hornacek    pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.#x;
259*2bcacabbSAdam Hornacek$s = s'pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.'
260*2bcacabbSAdam Hornacek    pP \"\'\(\)\<\>\{\}\[\]\/\# et $var.'x;
261*2bcacabbSAdam Hornacek$s = s"pP \"\'\(\)\<\>\{\}\[\]\/\# et $var."
262*2bcacabbSAdam Hornacek    pP \"\'\(\)\<\>\{\}\[\]\/\# et $var."x;
263*2bcacabbSAdam Hornacek$s = tr{pP \"\'\(\)\<\>\[\]\/\# fin.}{pP \"\'\(\)\<\>\[\]\/\# fin.};
264*2bcacabbSAdam Hornacek$s = tr[pP \"\'\(\)\<\>\{\}\/\# fin.][pP \"\'\(\)\<\>\{\}\/\# fin.];
265*2bcacabbSAdam Hornacek$s = tr(pP \"\'\<\>\{\}\[\]\/\# fin.)(pP \"\'\<\>\{\}\[\]\/\# fin.);
266*2bcacabbSAdam Hornacek$s = tr<pP \"\'\(\)\{\}\[\]\/\# fin.><pP \"\'\(\)\{\}\[\]\/\# fin.>;
267*2bcacabbSAdam Hornacek$s = tr/pP \"\'\(\)\<\>\{\}\[\]\/\# fin./pP \"\'\(\)\<\>\{\}\[\]\/\# fin./;
268*2bcacabbSAdam Hornacek$s = tr zpP \"\'\(\)\<\>\{\}\[\]\/\# fin.zpP \"\'\(\)\<\>\{\}\[\]\/\# fin.z;
269*2bcacabbSAdam Hornacek$s = tr#pP \"\'\(\)\<\>\{\}\[\]\/\# fin.#pP \"\'\(\)\<\>\{\}\[\]\/\# fin.#;
270*2bcacabbSAdam Hornacek$s = tr'pP \"\'\(\)\<\>\{\}\[\]\/\# fin.'pP \"\'\(\)\<\>\{\}\[\]\/\# fin.';
271*2bcacabbSAdam Hornacek$s = tr"pP \"\'\(\)\<\>\{\}\[\]\/\# fin."pP \"\'\(\)\<\>\{\}\[\]\/\# fin.";
272*2bcacabbSAdam Hornacek$s = y{pP \"\'\(\)\<\>\[\]\/\# fin.}{pP \"\'\(\)\<\>\[\]\/\# fin.};
273*2bcacabbSAdam Hornacek$s = y[pP \"\'\(\)\<\>\{\}\/\# fin.][pP \"\'\(\)\<\>\{\}\/\# fin.];
274*2bcacabbSAdam Hornacek$s = y(pP \"\'\<\>\{\}\[\]\/\# fin.)(pP \"\'\<\>\{\}\[\]\/\# fin.);
275*2bcacabbSAdam Hornacek$s = y<pP \"\'\(\)\{\}\[\]\/\# fin.><pP \"\'\(\)\{\}\[\]\/\# fin.>;
276*2bcacabbSAdam Hornacek$s = y/pP \"\'\(\)\<\>\{\}\[\]\/\# fin./pP \"\'\(\)\<\>\{\}\[\]\/\# fin./;
277*2bcacabbSAdam Hornacek$s = y zpP \"\'\(\)\<\>\{\}\[\]\/\# fin.zpP \"\'\(\)\<\>\{\}\[\]\/\# fin.z;
278*2bcacabbSAdam Hornacek$s = y#pP \"\'\(\)\<\>\{\}\[\]\/\# fin.#pP \"\'\(\)\<\>\{\}\[\]\/\# fin.#;
279*2bcacabbSAdam Hornacek$s = y'pP \"\'\(\)\<\>\{\}\[\]\/\# fin.'pP \"\'\(\)\<\>\{\}\[\]\/\# fin.';
280*2bcacabbSAdam Hornacek$s = y"pP \"\'\(\)\<\>\{\}\[\]\/\# fin."pP \"\'\(\)\<\>\{\}\[\]\/\# fin.";
281*2bcacabbSAdam Hornacek
282*2bcacabbSAdam Hornacek# more sigiled identifier tests
283*2bcacabbSAdam Hornacekprint "$abc\n${abc}\n", '$abc\n${abc}\n', "\n";
284*2bcacabbSAdam Hornacek$s = $ {var};
285*2bcacabbSAdam Hornacek$s = ${ var };
286*2bcacabbSAdam Hornacekprint qr z$abczix, "\n";
287*2bcacabbSAdam Hornacekprint $0 if $!;
288*2bcacabbSAdam Hornacekprint $^V;
289*2bcacabbSAdam Hornacekprint "${^GLOBAL_PHASE} is what?";
290*2bcacabbSAdam Hornacek
291*2bcacabbSAdam Hornacek# more quote-like tests
292*2bcacabbSAdam Hornacekqr{\.[a-z]+$}i;
293*2bcacabbSAdam Hornacek
294*2bcacabbSAdam Hornacek# should back to YYINITIAL after HERE document
295*2bcacabbSAdam Hornacekprint <<EOF;
296*2bcacabbSAdam Hornacek	Some text
297*2bcacabbSAdam HornacekEOF
298*2bcacabbSAdam Hornacek/\b sentinel \b/ && print; # This should heuristically match as m//
299*2bcacabbSAdam Hornacek
300*2bcacabbSAdam Hornacek# spaced sigil
301*2bcacabbSAdam Hornacek$ svar = 1;
302*2bcacabbSAdam Hornacek
303*2bcacabbSAdam Hornacek# more quote-like tests
304*2bcacabbSAdam Hornaceks{\.[a-z]+$}{no}i;
305*2bcacabbSAdam Hornacekmy $a = qr$abc$ix;
306*2bcacabbSAdam Hornacek
307*2bcacabbSAdam Hornacek# more POD tests
308*2bcacabbSAdam Hornacek=cut for no purpose
309*2bcacabbSAdam Hornacekprint "1\n";
310*2bcacabbSAdam Hornacek
311*2bcacabbSAdam Hornacek# POD odd case
312*2bcacabbSAdam Hornacek=ITEM fubar($)
313*2bcacabbSAdam Hornacek=CUT back -- not really though
314*2bcacabbSAdam Hornacekn0n{(sense]
315*2bcacabbSAdam Hornacek=cut back really
316*2bcacabbSAdam Hornacekprint "1\n";
317*2bcacabbSAdam Hornacek
318*2bcacabbSAdam Hornacek# format FORMLIST tests
319*2bcacabbSAdam Hornacek format STDOUT =
320*2bcacabbSAdam Hornacek@<<<<<<   @||||||   @>>>>>>
321*2bcacabbSAdam Hornacek# comment <args to follow>
322*2bcacabbSAdam Hornacek"left",  substr($var, 0, 2), "\$right"
323*2bcacabbSAdam Hornacek ...
324*2bcacabbSAdam Hornacek print
325*2bcacabbSAdam Hornacek.
326*2bcacabbSAdam Hornacekprint "1\n";
327*2bcacabbSAdam Hornacek
328*2bcacabbSAdam Hornacek# some tests for syntax near "s" characters
329*2bcacabbSAdam Hornacekmy $this = {};
330*2bcacabbSAdam Hornacekif (! -s $this->{filename}) {
331*2bcacabbSAdam Hornacek	open UCFILE, "create_file -s $this->{start} -e $this->{end} |" or exit 0;
332*2bcacabbSAdam Hornacek} else {
333*2bcacabbSAdam Hornacek	open UCFILE, "$this->{filename}" or exit 0;
334*2bcacabbSAdam Hornacek}
335*2bcacabbSAdam Hornacek
336*2bcacabbSAdam Hornacek# more quote-like tests
337*2bcacabbSAdam Hornacekmy $KK = "b";
338*2bcacabbSAdam Hornacek$bref = {'b' => 5};
339*2bcacabbSAdam Hornacek%bhash = ('b' => 6);
340*2bcacabbSAdam Hornacek{ print $bref -> {$KK} / $bhash { $KK }, "$bref->{$KK} $bhash{$KK} $b {\n"; }
341*2bcacabbSAdam Hornacek$bref->{int} = -1 * $bref->{int} / $bref->{a_rate}; # do not infer a m//
342*2bcacabbSAdam Hornacek$bref->{"int"} = -1 * $bref->{"int"} / $bref->{"a_rate"}; # do not infer a m//
343*2bcacabbSAdam Hornacek$var = qq[select t.col
344*2bcacabbSAdam Hornacek	from $table
345*2bcacabbSAdam Hornacek	where key = $k
346*2bcacabbSAdam Hornacek	and k1 = "$r->[0]->[0]"
347*2bcacabbSAdam Hornacek	and k2 = "$s->{ code }->{ v }"
348*2bcacabbSAdam Hornacek	and k3 = "$t ->[ 0 ]->{ v }"
349*2bcacabbSAdam Hornacek	and k4 = "$u ->{ k }->[ 0 ]"
350*2bcacabbSAdam Hornacek	order by value_date DESC];
351*2bcacabbSAdam Hornacekpush @$html, "<TD width=\"20%\">";
352*2bcacabbSAdam Hornacekprint "%\abc\n", %\, "abc\n";
353*2bcacabbSAdam Hornacek# some comment
354*2bcacabbSAdam Hornacekpush @arr, "'$key'=>" . 'q[' . $val . '],';
355*2bcacabbSAdam Hornacek#qq[$var]
356*2bcacabbSAdam Hornacek
357*2bcacabbSAdam Hornacek# more HERE-document tests
358*2bcacabbSAdam Hornacekmyfunc2(<< "THIS", $var, <<~'THAT', $var, <<OTHER, <<\ELSE, <<`Z`);
359*2bcacabbSAdam HornacekHere's a $line1
360*2bcacabbSAdam HornacekTHIS
361*2bcacabbSAdam Hornacek	Here's a $line2
362*2bcacabbSAdam Hornacek	THAT
363*2bcacabbSAdam HornacekHere's a $line3
364*2bcacabbSAdam HornacekOTHER
365*2bcacabbSAdam HornacekHere's a $line4
366*2bcacabbSAdam HornacekELSE
367*2bcacabbSAdam HornacekHere's a $line5
368*2bcacabbSAdam HornacekHere's a \$line6
369*2bcacabbSAdam HornacekZ
370*2bcacabbSAdam Hornacek/\b sentinel \b/ && print; # This should heuristically match as m//
371*2bcacabbSAdam Hornacek
372*2bcacabbSAdam Hornacek# more quote-like tests
373*2bcacabbSAdam Hornacekfor my $k (grep /=/, split /;/, $d, -1) {
374*2bcacabbSAdam Hornacek	print "1\n";
375*2bcacabbSAdam Hornacek}
376*2bcacabbSAdam Hornacek
377*2bcacabbSAdam Hornacek# more format tests
378*2bcacabbSAdam Hornacek%a = (
379*2bcacabbSAdam Hornacek    format => "%s");
380*2bcacabbSAdam Hornacek format=
381*2bcacabbSAdam Hornacek@<<<<<<   @||||||   @>>>>>>
382*2bcacabbSAdam Hornacek"left",  "middle", "right"
383*2bcacabbSAdam Hornacek.
384*2bcacabbSAdam Hornacekprint "1\n";
385