今から始める Inline::C 入門

60e652d0244f47d2da4e1f7e712f9328?s=47 K
September 23, 2018

今から始める Inline::C 入門

Okinawa.pm #7 で Inline::C を使ったコードを紹介しながらしゃべりました。

- お気に入りのワンライナー
perl -E 'use Inline C => q{ SV*codehex(char*a,char*b){return newSVpvf("I Love %s and %s",a,b);} }; say codehex+Perl=>Go'

- illguts の PDF
https://st.aticpan.org/source/RURBAN/illguts-0.49/illguts.pdf

60e652d0244f47d2da4e1f7e712f9328?s=128

K

September 23, 2018
Tweet

Transcript

  1. ࠓ͔Β࢝ΊΔ*OMJOF$ೖ໳ PLJOBXBQN

  2. !DPEFIFY !$PEF)FY w .JDSPTFSWJDFTΛ։ൃͯ͠Δ w ࠷ۙ͸(P࣌ʑ1FSM w ϋΠαΠ0LJOBXBQN

  3. *OMJOF$
 ࢖ͬͨ͜ͱ͋Γ·͔͢

  4. *OMJOF$

  5. *OMJOF$ w $ݴޠͷ$ w 1FSMͷαϒϧʔνϯΛ$Ͱॻ͘͜ͱ͕Ͱ͖Δ w ΋ͪΖΜ$ଆͰ1FSMͷ"1*ͷػೳ΋࢖͑Δ w εΫϦϓτ্ʹॻ͚ΔͷͰ1FSM"1*ͷ
 ѻ͍ํͷྑ͍ษڧʹͳΔ

  6. ͲΜͳ෩ʹॻ͚Δͷʁʁ

  7. $BTF

  8. None
  9. Ϟδϡʔϧͷϩʔυ

  10. Ϟδϡʔϧͷϩʔυ $ͷίʔυΛهड़

  11. Ϟδϡʔϧͷϩʔυ $ͷίʔυΛهड़ ؔ਺ݺͼग़͠

  12. γϯϓϧʂʂ

  13. $BTF

  14. QFSMFVTF*OMJOF$ R\WPJETBZ \QSJOUG )FMMP  8PSMEaO ^^TBZ

  15. ϫϯϥΠφʔͱͯ͠΋ʂʂ

  16. ࠓճ঺հ͢Δ΋ͷ w 1FSMͰ$Λѻ͏ͨΊʹ w 1FSM"1*Ͱ࢖͏࠷௿ݶͷجຊܕΛཧղ͢Δ w ܕͷؔ܎ੑΛ஌Δ w $͔Β1FSM΁஋Λฦ͢ w

    1FSMͷ஋Λ$΁౉͢ w ܕม׵ͬͯͲ͏΍ͬͯΔͷʁ
  17. 1FSMͷܕΛ஌Ζ͏ʂ 1FSMͰ$Λѻ͏ͨΊʹ࠷௿ݶඞཁͳܕ

  18. 47ܕ

  19. 47ܕ w 1FSMͰѻΘΕΔ஋͸47ܕ͔Β೿ੜ͍ͯ͠Δ w 1FSMͷجຊܕͷશͯ͸47ܕ΁ม׵Ͱ͖Δ w "7 )7 (7 $7

    37ͳͲͳͲ
  20. IUUQTTUBUJDQBOPSHTPVSDF363#"/JMMHVUT TWUZQFTQOH

  21. ϓϦϛςΟϒͳܕ

  22. ϓϦϛςΟϒͳܕ w ϓϦϛςΟϒͳܕ͸47͕͍࣋ͬͯΔ w εΧϥͳ஋ͷܕΛࢦ͢ w *7 /7 17 37

  23. *7
 NZJW

  24. /7
 NZOW

  25. 17
 NZQWTUSJOH

  26. 37
 NZSWaIW

  27. ͪͳΈʹ

  28. *7ʹWPJE ͷϙΠϯλ΋
 ֨ೲ͢Δ͜ͱ͕Ͱ͖Δʂ

  29. ࢀߟʹͳΔϖʔδ w IUUQTTUBUJDQBOPSHTPVSDF363#"/ JMMHVUTJMMHVUTQEG w $ʹΑΔ1FSM֦ுೖ໳
 IUUQYTVCUVUHJUIVCJP

  30. $͔Β1FSM΁஋Λฦ͢ $͔Β1FSM΁஋Λฦؔ͢਺Λఆٛ͢Δ

  31. None
  32. JOUΛฦ͢ίʔυ

  33. DIBS Λฦ͢ίʔυ

  34. 1FSMͰड͚औΔ࣌ w $ͷੈքͰ͸JOU΍DIBS ͷ·· w 1FSMͷੈք΁஋͕౉Δ࣌ʹܕ͕ม׵͞ΕΔ w ม׵͞ΕΔཧ༝ͱͯ͠UZQFNBQͱ͍͏΋ͷ͕
 ؔΘ͖ͬͯ·͕͢͜Ε͸·ͨޙड़

  35. 1FSMͷ஋Λ$΁౉͢ 1FSM͔Β$΁஋Λฦؔ͢਺Λఆٛ͢Δ

  36. DIBS Λड͚औΔؔ਺

  37. JOUΛड͚औΔؔ਺

  38. $Ͱड͚औΔ࣌ w 1FSMͷੈքͰ͸47ͷ·· w $ͷੈք΁஋͕౉Δ࣌ʹܕ͕ม׵͞ΕΔ w ͜͜Ͱ΋ม׵͞ΕΔཧ༝ͱͯ͠UZQFNBQͱ͍ ͏΋ͷ͕ؔΘ͖ͬͯ·͢

  39. UZQFNBQͬͯԿʁ ܕ͕ࣗಈͰม׵͞ΕΔ࢓૊Έ

  40. IUUQTHJUIVCDPNJOHZEPUOFUJOMJOFDQNDQFSMCJOEJOHT

  41. IUUQTHJUIVCDPN1FSMQFSMCMPCCMFBEMJC&YU6UJMTUZQFNBQ

  42. UZQFNBQ w JOU͸5@*7Ͱఆٛ͞ΕͯΔม׵ͷ࢓૊ΈΛ࢖͏ w DIBS ͸5@17Ͱఆٛ͞Ε͍ͯΔ࢓૊ΈΛ࢖͏ w */165 065165ʹͦΕͧΕίϯόʔλʔΛఆٛ w

    */1651FSM$΁ͷίϯόʔλ w 065165$1FSM΁ͷίϯόʔλ
  43. $ perldoc perlxstypemap

  44. JOUͷ৔߹ w JOU  5@*7 w */165 • $var =

    ($type)SvIV($arg) w 065165 • sv_setiv($arg, (IV)$var);
  45. DIBS ͷ৔߹ w DIBS    5@17 w */165

    • $var = ($type)SvPV_nolen($arg) w 065165 • sv_setpv((SV*)$arg, $var);
  46. ·ͱΊ

  47. ·ͱΊ w *OMJOF$Λ࢖ͬͯ1FSMͱ΍ΓͱΓ͢Δ؆୯ͳ
 ίʔυΛ࢖ͬͯઆ໌ͨ͠ w 1FSMʹ΋ܕ͸ଘࡏ͢Δ w ݴޠؒͰͷܕม׵๏͸UZQFNBQͰఆٛ͞ΕͯΔ w ୯७ͳ৔߹1FSMͷܕΛҙࣝ͢Δඞཁ͸ͳ͍

    w ؆୯ʹॻ͚Δʂʂ