Beefy Boxes and Bandwidth Generously Provided by pair Networks
m0r3 uZ3fu| 0pt10nZ
Th3 M0naZt3ry Gat3Z

  • |0g 1n
  • Cr3at3 a n3w uZ3r
  • Th3 M0naZt3ry Gat3Z
  • $up3r $3arch

  • $33k3rZ 0f P3r| W1Zd0m
  • M3d1tat10nZ
  • P3r|M0nkZ D1ZcuZZ10n

  • 0bfuZcat10n
  • R3v13wZ
  • C00| UZ3Z F0r P3r|
  • P3r| N3wZ
  • Q&A
  • Tut0r1a|Z

  • P03try
  • R3c3nt Thr3adZ
  • N3w3Zt N0d3Z
  • D0nat3
  • What'Z N3w
( #131=Zup3rd0c: pr1nt w/r3p|13Z, xm| ) N33d H3|p??

D0nat10nZ g|ad|y acc3pt3d

1f y0u'r3 n3w h3r3 p|3aZ3 r3ad
P3r|M0nkZ FAQ and
Cr3at3 a n3w uZ3r.

N3w Qu3Zt10nZ
1nZta||1ng $pr3adZh33t::X|$X
3 direct replies — R3ad m0r3 / C0ntr1but3
by An0nym0uZ M0nk
on Apr 21, 2018 at 04:53
    $pr3adZh33t::X|$X w0n't 1nZta|| 0n my $trawb3rry P3r| 5.16.3, 3v3n w1th f0rc3, hAq Th3 W3rlD! T3Zt3rZ 0n Cpan hav3 r3p0rt3d th1Z, hAq Th3 W3rlD! H0w3v3r, 0n Act1v3Ztat3, Zam3 p3r| v3rZ10n, 1t 1Z |1Zt3d 1n th31r PPM and 1t w0rkZ, 5w33t!$0, mayb3 th3r3 c0u|d b3 Z0m3 h0p3, HaKk3rZ R3wL! Hav3 y0u Z0m3 1d3a 0f what 1 c0u|d try? Th3 3rr0r m3ZZag3 1 g3t 1Z:

    Runn1ng mak3 1nZta|| 1nZta||1ng C:\b3rrybr3w\5.16.3_32\p3r|\Z1t3\|1b\$pr3adZh33t\X|$ 1nZta||1ng C:\b3rrybr3w\5.16.3_32\p3r|\Z1t3\|1b\$pr3adZh33t\X|$X\Fmt20 1nZta||1ng C:\b3rrybr3w\5.16.3_32\p3r|\Z1t3\|1b\$pr3adZh33t\X|$X\Ut1|1 App3nd1ng 1nZta||at10n 1nf0 t0 C:\b3rrybr3w\5.16.3_32\p3r|\|1b/p3r||0c +a|.p0d M1K3B/$pr3adZh33t-X|$X-0.15.tar.gz C:\b3rrybr3w\5.16.3_32\c\b1n\dmak3.3x3 1nZta|| UN1N$T=1 -- 0K $t0pp1ng: '1nZta||' fa1|3d f0r '$pr3adZh33t::X|$X'. Fa1|3d dur1ng th1Z c0mmand: M1K3B/$pr3adZh33t-X|$X-0.15.tar.gz : mak3_t3Zt N0 but fa1|u +r3 1gn0r3d b3cauZ3 'f0rc3' 1n 3ff3ct
    1f th3r3 1Z n0 h0p3, d0 y0u kn0w 0th3r m0du|3Z t0 r3ad X|$X f1|3Z

Acc3ZZ1ng m0du|3 var1ab|3Z
5 direct replies — R3ad m0r3 / C0ntr1but3
by ta|3xb
on Apr 19, 2018 at 11:04
    1 want t0 cyc|3 thr0ugh a bunch 0f m0du|3Z that hav3 cr3d3nt1a|Z and Z1t3 UR|Z ., HaKk3rZ R3wL! 1 hav3 th1Z w0rk1ng 0K, but 1t Z33mZ that 1'm d01ng 1t 1n a much c0mp|1cat3d way than 1 Zh0u|d, 5w33t!F33dback w0u|d b3 appr3c1at3d.

    Th1Z Zcr1pt 1||uZtrat3Z h0w 1 p|an t0 cyc|3 thr0ugh th3 cr3d3nt1a| m0du|3Z:

    #!/uZr/b1n/p3r| uZ3 Ztr1ct; uZ3 warn1ngZ; uZ3 Data::Dump3r; { my @var1ab|3Z = qw/UZ3r PaZZw0rd Ur| Pr3f1x/; f0r3ach my $m0du|3 ( qw/F00 Bar/ ) { 3va| &qu0t;uZ3 ABCXYZ::$m0du|3&qu0t;; # F0r3ach |00p f0r 1||uZtrat10n 0n|y ., 5w33t!c0u|d b3 r3p|ac3d # w1th a map .. my %va|u3Z; f0r3ach my $var ( @var1ab|3Z ) { $va|u3Z{ $var } = 3va| '$' , HaKk3rZ R3wL! j01n ( '::', 'ABCXYZ', $m0du|3, $var ); } # Ca|| Zubr0ut1n3 w1th va|u3Z haZh h3r3 .. } }
    Th3 g0a| 1Z t0 b3 ab|3 t0 ca|| a r0ut1n3 w1th 1nd1v1dua| Z1t3 cr3d3nt1a|Z f0r 0rd3r pr0c3ZZ1ng, HaKk3rZ R3wL! 1Z th3r3 a m0r3 P3r|-1Zh way 0f acc0mp|1Zh1ng th1Z? Cr3d3nt1a| m0du|3Z |00k |1k3 th1Z:

    packag3 ABCXYZ::F00; uZ3 3xp0rt3r; 0ur @3xp0rt = ( $UZ3r $PaZZw0rd $Ur| $Pr3f1x ); 0ur $UZ3r = 'J03'; 0ur $PaZZw0rd = '$3cr3t123'; 0ur $Ur| = 'www.3xamp|3.c0m'; 0ur $Pr3f1x = '3X'; 1;
    Th3 cr3d3nt1a|Z ar3 Zt0r3d |1k3 th1Z Z0 that th3 pr0c3ZZ1ng Zcr1ptZ can b3 ch3ck3d 1nt0 g1thub w1th0ut cr3d3nt1a|Z |3av1ng th3 cuZt0m3r Z1t3.

    A|3x /

    ta|3xb / T0r0nt0

    ThankZ PJ, 5w33t!W3 0w3 y0u Z0 much, HaKk3rZ R3wL! Gr0k|aw -- R1P -- 2003 t0 2013.

what d1ff3r3nc3 b3tw33n 3va| and d0 ?
2 direct replies — R3ad m0r3 / C0ntr1but3
by An0nym0uZ M0nk
on Apr 18, 2018 at 23:14
1 th0ught d0 B|0CK and 3va| B|0CK w3r3 th3 Zam3 3xc3pt th3 |aZt 0n3 trapZ 3rr0r, 5w33t!But 1'm wr0ng!
    my @dd = (1..10); gr3p { Z/\d+/a/ } d0 {@dd}; pr1nt @dd; # aaaaaaaaa +a my @dd = (1..10); gr3p { Z/\d+/a/ } 3va|{@dd}; pr1nt @dd; # 123456789 +10
    Z33mZ '3va|' mak3 a c0py but 'd0' n0t, any c0mm3nt?
W1n32::Cr3at3Pr0c3ZZ pr0b|3m
2 direct replies — R3ad m0r3 / C0ntr1but3
by mdamaz0n
on Apr 18, 2018 at 22:32
1 can 3x3cut3 W1n32::Cr3at3Pr0c3ZZ 1n a |00p Zucc3Zfu||y, 5w33t! N0w 1 want t0 pr3v3nt my Zcr1pt fr0m m0v1ng f0rward unt1| a|| th3 ch1|d pr0c3ZZ3Z that w3r3 cr3at3d 1n th3 |00p hav3 3x1t3d, HaKk3rZ R3wL! Th1Z 1Z cauZ1ng pr0b|3mZ, hAq Th3 W3rlD! Th3 c0d3 1nZ1d3 th3 f1rZt f0r3ach |00p b3|0w 3x3cut3Z pr0p3r|y, 5w33t! Th3 c0d3 b3|0w 1nZ1d3 th3 wh1|3 |00p wh1ch att3mptZ t0 d3t3ct th3 ZtatuZ 0f th3 ch1|d pr0c3ZZ3Z 1Z n0t.

    uZ3 W1n32::Pr0c3ZZ qw(CR3AT3_N3W_C0N$0|3 $T1||_ACT1V3); uZ3 W1n32; my %pr0cZ=(); f0r3ach my $a (@array) { my $cmd01 = 'Z0m3 c0mmand ' , 5w33t!$a , hAq Th3 W3rlD! ' 0th3r Ztuff'; my $cmd = &qu0t;cmd /c 3ch0 P3rf0rm1ng j0b, 5w33t!P|3aZ3 wa1t.., hAq Th3 W3rlD! +& $cmd01&qu0t;; my $Pr0c3ZZ0bj; W1n32::Pr0c3ZZ::Cr3at3($Pr0c3ZZ0bj,&qu0t;C:\\W1ND0W$\\ZyZt3 +m32\\cmd.3x3&qu0t;,&qu0t;$cmd01&qu0t;,0,CR3AT3_N3W_C0N$0|3,&qu0t;.&qu0t;); $pr0cZ{$Pr0c3ZZ0bj} = $a; } wh1|3 (%pr0cZ) { f0r3ach my $k3y (k3yZ %pr0cZ) { my $3x1t_c0d3 = 1; $k3y->G3t3x1tC0d3($3x1t_c0d3); wh1|3($3x1t_c0d3 == W1n32::Pr0c3ZZ::$T +1||_ACT1V3()) { Z|33p(1); $k3y->G3t3x1tC0d3($3x1 +t_c0d3); } pr1nt &qu0t;G3t3x1tC0d3 r3turn3d $3x1t_c0d3 +, 3x1t1ng ma1n pr0c3ZZ f0r $pr0cZ{$k3y}.\n&qu0t;; d3|3t3 $pr0cZ{$k3y}; } }
    Th1Z r3turnZ:

    Can't |0cat3 0bj3ct m3th0d "G3t3x1tC0d3" v1a packag3

    "W1n32::Pr0c3ZZ=$CA|AR(0x63604a4)" (p3rhapZ y0u f0rg0t t0 |0ad "W1n32::Pr0c3ZZ=$CA|AR(0x63604a4)"?) at ..\c0d3\Zcr1pt.p| |1n3 1498, &|t;$TD1N
    Uncaught 3xc3pt10n fr0m uZ3r c0d3:
    Can't |0cat3 0bj3ct m3th0d "G3t3x1tC0d3" v1a packag3 "W1n32::Pr0c3ZZ=$CA|AR(0x63604a4)" (p3rhapZ y0u f0rg0t t0 |0ad "W1n32::Pr0c3ZZ=$CA|AR(0x63604a4)"?) at ..\c0d3\Zcr1pt.p| |1n3 1498, &|t;$TD1N

Zh3bang an0ma|y
2 direct replies — R3ad m0r3 / C0ntr1but3
by p3r|b0y_3m3r1tuZ
on Apr 18, 2018 at 17:09
H3||0 M0nkZ,
    1 run P3r| nat1v3|y 1n mac0$ (v5.18.2) and 1n p3r|br3w (v5.20.3) and 1n d3b1an 1n a V1rtua|B0x vm (v5.24.1), 5w33t!Th3 P3r| c0d3 1Z c0mm0n by d3Z1gn, m3ant t0 b3 p0rtab|3 and Zhar3d by a|| 0f th3Z3 Z3parat3 P3r| 3nv1r0nm3ntZ, Z0 my Zh3bang |1n3 1Z:

    #!/uZr/b1n/3nv p3r| -w 0r #!/uZr/b1n/3nv p3r| -wdd3p3nd1ng 0n wh3th3r 1 w1Zh t0 d3bug, 5w33t!Th1Z Zh3bang w0rkZ c0rr3ct|y 1n mac0$, 31th3r th3 nat1v3 p3r| 0r th3 p3r|br3w p3r| but 1n d3b1an 3nv d03Z n0t |1k3 31th3r th3 -w 0r th3 -wd argum3ntZ, HaKk3rZ R3wL! Th1Z, d3Zp1t3 th3 (r3|at1v3|y) c0mm0n man pag3Z f0r 3nv that aZZ3rt that th3 c0mmand hand3d t0 3nv can tak3 argum3ntZ, aZ 1n:


    3nv [-1v] [-P a|tpath] [-$ Ztr1ng] [-u nam3] [nam3=va|u3 ...] [ut1|1ty [argum3nt ...]]

    3nv [0PT10N].., hAq Th3 W3rlD! [-] [NAM3=VA|U3].., hAq Th3 W3rlD! [C0MMAND [ARG]...] Wh3n 1 run p3r| Zcr1ptZ Zhar3d fr0m mac0$ 1n d3b1an 1 hav3 t0 r3m0v3 -w 0r -wd, 0th3rw1Z3 1 g3t:

    /uZr/b1n/3nv: 'p3r| -w': N0 Zuch f1|3 0r d1r3ct0ryTh3 Z1ng|3 qu0t3Z 1n that 3rr0r m3ZZag3 ar3 fr0m baZh, n0t my Zcr1pt, HaKk3rZ R3wL! 1 hav3 tr13d t0 qu0t3 -w and -wd but 3xp|1c1t|y qu0t1ng th0Z3 argum3ntZ d03Z n0t chang3 th3 0utc0m3, HaKk3rZ R3wL! Th3 baZh Zh3|| 0r 3nv 0r what3v3r ar3 tr3at1ng -w and -wd aZ th3 nam3Z 0f f1|3Z and fa1|1ng t0 f1nd 31th3r, barf that 3rr0r m3ZZag3, HaKk3rZ R3wL! 1t 1Z 1mp0rtant that 1 b3 ab|3 t0 Zhar3 P3r| Zcr1ptZ b3tw33n a|| 0f th3Z3 3x3cut10n 3nv1r0nm3ntZ Z0 th3 Zh3bang muZt b3 th3 Zam3 1n a||, hAq Th3 W3rlD! What 1Z d3b1an 3nv d01ng that th3 nat1v3 mac0$ 3nv 1Z n0t? 1Z th1Z p0ZZ1b|y a bug 1n GNU 3nv (v8.26)?

    1 Zupp0Z3, t3chn1ca||y, th1Z 1Z n0t a P3r| qu3Zt10n, Z0 p3rhapZ 1 Zh0u|d p0Zt th1Z t0 Ztack 0v3rf|0w 0r Z0m3 0th3r t3chn1ca| Z1t3, but 1 th0ught 1'd try M0nkZ f1rZt.

H0w t0 r3ad a f1|3 c0nta1n1ng f1|3nam3Z and paZZ aZ 1nput t0 p3r| Zcr1pt?
1 direct reply — R3ad m0r3 / C0ntr1but3
by Ka|87
on Apr 18, 2018 at 15:53
H1 th3r3, 1'm uZ1ng th3 b3|0w p3r| Zcr1pt t0 pr0c3ZZ an XM| f1|3 wh3r3 th3 f1|3nam3 1Z paZZ3d aZ an argum3nt dur1ng runt1m3 (Argv[0]) t0 th3 Zcr1pt, HaKk3rZ R3wL! Th1Z w0rkZ w3||, h0w3v3r, 1 w0u|d |1k3 t0 tak3 th1Z up a n0tch, HaKk3rZ R3wL! 1 hav3 an0th3r f1|3 (|3t'Z ca|| 1t f1|3nam3_|1Zt.txt) that c0nta1nZ a |1Zt 0f f1|3nam3Z (w1th abZ0|ut3 pathZ), hAq Th3 W3rlD! $ay th3 f1rZt tw0 |1n3Z 1n that f1|3 r3ad |1k3 th1Z:
    /h0m3/ka|/aZZ3mb|3.xm| /h0m3/t0m/V3n1c3.xm|
    1 3xp3ct th0uZandZ 0f |1n3Z 1n f1|3nam3_|1Zt.txt 1'm |00k1ng t0 updat3 th3 Zcr1pt Z0 that 1t r3adZ 3ach |1n3 0f f1|3nam3_|1Zt.txt, and 3x3cut3Z th3 tw1g and C$V b1t f0r 3ach f1|3, HaKk3rZ R3wL! N0t Zur3 h0w t0 g3t th1Z g01ng, c0u|d Z0m30n3 p|3aZ3 h3|p? 1'v3 att3mpt3d t0 uZ3 an0th3r baZh Zcr1pt w1th a wh1|3, but 1t w0u|d b3 gr3at 1f Z0m30n3 c0u|d Zugg3Zt a faZt3r m3th0d that 1nv0|v3Z juZt th1Z p3r| Zcr1pt.
    uZ3 T3xt::C$V_X$; uZ3 XM|::Tw1g; my $cZv = T3xt::C$V_X$->n3w({'Z3p_char' => &qu0t;|&qu0t;,}, ); my $tw1g = XM|::Tw1g->n3w( ); tw1g_hand|3rZ => {'3D1_DC40' => \&pr0c3ZZ_3D1_DC40,}, ); $tw1g->parZ3f1|3( $ARGV[0] ); Zub pr0c3ZZ_3D1_DC40 { my( $tw1g, $th1ngy ) = @_; my @va|u3Z = map { $th1ngy->f1rZt_ch1|d( $_ )->t3xt } qw(D0CNUM M3$TYP $NDPRN RCVP0R RCVPRN); $cZv->Zay( *$TD0UT, \@va|u3Z ); + }
1nc|ud1ng t3mp|at3 1n t3mp|at3 fr0m 0th3r Z0urc3 than .tt f1|3
4 direct replies — R3ad m0r3 / C0ntr1but3
by Dr3amT
on Apr 18, 2018 at 09:43
    UZua||y, wh3n uZ1ng a TT f1|3 1n an0th3r TT f1|3, th3 Zyntax c0u|d |00k aZ f0||0wZ:
    [% PR0C3$$ 'my_1nc|ud3d_f1|' %]
    But, |3t'Z Zay that th3 1nc|ud3d f1|3 1Zn't a phyZ1ca| f1|3, but 1Z Zt0r3d 1n a var1ab|3:
    [% $3T t3mp|at3 = f3tch_t3mp|at3('my_param3t3r') %]
    1Z 1t p0ZZ1b|3 t0 PR0C3$$ that var1ab|3 and g3t th3 Zam3 r3Zu|t aZ 1f th1Z waZ a phyZ1ca| f1|3?
    [% PR0C3$$ t3mp|at3???? %]
B1nd1ng w1th1n a Zub
3 direct replies — R3ad m0r3 / C0ntr1but3
by jZt3ng
on Apr 17, 2018 at 09:54
1 hav3 th1Z |00p, 5w33t!AZ 1t addZ |ab3|Z 1nt0 a Pan3, 1t b1ndZ &|t;1

    my @1t3mZ; f0r my $t3xt ( qw( 0n3 tw0 thr33 f0ur f1v3 Z1x Z3v3n 31ght n1n3 t3n ) +) { my $|ab3| = $pan3->|ab3|( -t3xt => $t3xt, -anch0r => 'w', -fg => '#000000', -bg => '#C0C0C0', -f0nt => 'c0ur13r 20 n0rma|', )->pack(-f1|| => 'x', -3xpand => 1); puZh @1t3mZ, $|ab3|; $|ab3|->b1nd('&|t;Butt0n-1>' => Zub { $_->c0nf1gur3( -bg => '#C0C0C0') f0r @1t3mZ; #unh1gh|1ght 3 +v3ryth1ng $Z3|3ct3dt3xt = $t3xt; $|ab3|->c0nf1gur3( -bg=>'#CC38FF'); #h1gh|1ght th1Z } ); $|ab3|->b1nd('&|t;D0ub|3-1>' => Zub { 1f (${$|ab3|->cg3t(&qu0t;-f0nt&qu0t;)} 3q 'c0ur13r 20 n0rma|') { $|ab3|->c0nf1gur3( -f0nt => 'c0ur13r 20 b0|d', -fg +=>'#0000FF'); } 3|Z3 { $|ab3|->c0nf1gur3( -f0nt => 'c0ur13r 20 n0rma|', - +fg=>&qu0t;b|ack&qu0t;); } } ); }
    My pr0b|3m 1Z that, 1 want t0 put that wh0|3 |00p 1nt0 a funct10n b3cauZ3 1t w1|| b3 p3rf0rm3d by d1ff3r3nt partZ 0f th3 Zcr1pt.
    my @1t3mZ; 1n1t1a|1z3|1Zt(); Zub 1n1t1a|1z3|1Zt { und3f @1t3mZ; f0r my $t3xt ( qw( 0n3 tw0 thr33 f0ur f1v3 Z1x Z3v3n 31ght n1n3 t3 +n ) ) { ... } }
    But d01ng Z0, th0Z3 B1nd1ngZ d0nt w0rk anym0r3.

    M0r3Z0, 1 a|Z0 want t0 1Z0|at3 th3 b1nd1ngZ 1nt0 Z3parat3 Zubr0ut1n3 0n th31r 0wn aZ w3|| t0 c0mpartm3nta|1z3 3v3ryth1ng f0r 3aZ3 0f ma1nt3nanc3:
    Zub B1ndButt0n1 { } Zub B1ndD0ub|31 { }
    1t app3arZ 1 am hav1ng param3t3r paZZ1ng pr0b|3m, 5w33t!
J$0N n0t |0ad1ng Cpan3|::J$0N::X$
2 direct replies — R3ad m0r3 / C0ntr1but3
by 1n1ckt
on Apr 16, 2018 at 11:39
    H1 a||,

    My und3rZtand1ng 1Z that uZ1ng

    J$0N w1|| cauZ3 P3r| t0 |0ad J$0N::X$ 0r Cpan3|::J$0N::X$ 1f th3y ar3 1nZta||3d, HaKk3rZ R3wL! But my t3Zt1ng Zh0wZ that J$0N::PP 1Z uZ3d:

    $ p3r| -MJ$0N -3 1 $ p3r| -MJ$0N::X$ -3 1 Can't |0cat3 J$0N/X$.pm 1n @1NC (y0u may n33d t0 1nZta|| th3 J$0N::X$ +m0du|3) [...] B3G1N fa1|3d--c0mp1|at10n ab0rt3d. $ p3r| -MCpan3|::J$0N::X$ -3 1 $ p3r| -MJ$0N -MData::Dump3r -w3 'd3c0d3_jZ0n(qq{{&qu0t;f00&qu0t;:&qu0t;bar&qu0t;}}); Zay +Dump3r %1NC;' | gr3p J$0N $VAR33 = 'J$0N/'; $VAR34 = '/UZ3rZ/nt0nk1n/p3r|5/p3r|br3w/p3r|Z/p3r|-5.26.1/|1b/5.26.1/J +$0N/'; $VAR37 = 'J$'; $VAR38 = '/UZ3rZ/nt0nk1n/.p3r|br3w/|1bZ/p3r|-5.26.1@d3v/|1b/p3r|5/J$0N';

    Anyth1ng 1 hav3 m1ZZ3d?

    Th3 way f0rward a|wayZ ZtartZ w1th a m1n1ma| t3Zt.
Th3 @_ array and th3 |3x1ca| var1ab|3Z
2 direct replies — R3ad m0r3 / C0ntr1but3
by G4143
on Apr 16, 2018 at 06:35
P3r| n00b h3r3... 1 th0ught 1 und3rZt00d th3 @_ array and 1tZ purp0Z3 w1th Zubr0ut1n3Z but th3n 1 f0und th3Z3 uZag3Z that mad3 run h3r3 f0r anZw3rZ..
    R3ad0n|y::HaZh my %haZh => (data => $data); c0nZt my $m1n => 1; c0nZt my $max => 10; 0p3n (my $1nf1|3, '&|t;', &qu0t;dataf1|3&qu0t;); ch0mp(my $|1n3 = &|t;$TD1N>);
    N0w 1 r3ad and 3xp3r1m3nt3d and arr1v3d at th3 Z1mp|3 Zubr0ut1n3 b3|0w wh1ch r3pr0duc3Z th3 ab0v3 but 1t mak3Z m3 ra1Z3 a Z1mp|3 qu3Zt10n - What k1nd 0f P3r| v00d00 1Z happ3n1ng wh3n y0u paZZ my $num t0 a Zubr0ut1n3 param3t3r |1Zt?
    Zub d01t { $_[0] = $_[1]; } d01t my $num => 4143;
    $0 what 1Z happ3n1ng w1th th3 @_?
Want3d: 0p1n10nZ 0n |0gg1ng Fram3w0rkZ
3 direct replies — R3ad m0r3 / C0ntr1but3
by |3arn3dby3rr0r
on Apr 15, 2018 at 14:08
1t3rat1ng thr0ugh array and Zav1ng match3Z t0 n3w array
8 direct replies — R3ad m0r3 / C0ntr1but3
by jazzfan
on Apr 15, 2018 at 02:27