http://www.perlmonks.org?node_id=1051291


in reply to pack mangles utf output

pack works for me.
$ use Devel::Peek

$ Dump pack 'A20', "FREIGHT – INTRASTATE"
SV = PV(0x4a5bce0) at 0x4a29660
  REFCNT = 1
  FLAGS = (PADTMP,POK,pPOK,UTF8)
  PV = 0x4644800 "FREIGHT \342\200\223 INTRASTATE"\0 [UTF8 "FREIGHT \x{2013} INTRASTATE"]
  CUR = 22
  LEN = 40
[]
$ open my $fh, '>:encoding(UTF-8)', '/tmp/foobar'
1
$ $fh->print(pack 'A20', "FREIGHT – INTRASTATE")
1

/tmp$ hex /tmp/foobar
0000  46 52 45 49 47 48 54 20  e2 80 93 20 49 4e 54 52  FREIGHT – INTR
0010  41 53 54 41 54 45                                 ASTATE