There could be a non-printing character before the comma that is causing your match to fail; I inserted a NULL which doesn't show up when you print the line. You can inspect each character using split along with ord and sprintf inside a map, printing the ordinal value of each using say.
$ perl -E '
$_ = qq{PID: \0, VID: 255, SN: AGM163923J5};
say;
say for map {sprintf q{0x%02x}, ord } split m{};'
PID: , VID: 255, SN: AGM163923J5
0x50
0x49
0x44
0x3a
0x20
0x00 <-- the unseen NULL
0x2c
0x20
0x56
0x49
0x44
0x3a
0x20
0x32
0x35
0x35
0x2c
0x20
0x53
0x4e
0x3a
0x20
0x41
0x47
0x4d
0x31
0x36
0x33
0x39
0x32
0x33
0x4a
0x35
$
I hope this is helpful.