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