.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Parse::DMIDecode 3pm" .TH Parse::DMIDecode 3pm "2021-01-04" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Parse::DMIDecode \- Interface to SMBIOS using dmidecode .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& use strict; \& use Parse::DMIDecode (); \& \& my $decoder = new Parse::DMIDecode; \& $decoder\->probe; # Actively probe using dmidecode \& \& # Manually supply your own dmidecode output to be parsed \& # $decoder\->parse(qx(sudo /usr/sbin/dmidecode)); \& \& printf("System: %s, %s", \& $decoder\->keyword("system\-manufacturer"), \& $decoder\->keyword("system\-product\-name"), \& ); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module provides an \s-1OO\s0 interface to \s-1SMBIOS\s0 information through the \fIdmidecode\fR command which is known to work under a number of Linux, \s-1BSD\s0 and BeOS variants. .SH "METHODS" .IX Header "METHODS" .SS "new" .IX Subsection "new" .Vb 4 \& my $decoder = Parse::DMIDecode\->new( \& dmidecode => "/usr/sbin/dmidecode", \& nowarnings => 1, \& ); .Ve .PP This is the constructor method to create a Parse::DMIDeocde object. It accepts two optional arguments; \f(CW\*(C`dmidecode\*(C'\fR and \&\f(CW\*(C`nowarnings\*(C'\fR. .PP The \f(CW\*(C`dmidecode\*(C'\fR argument specifies the full path and filename of the \fIdmodecode\fR command that should used by the \f(CW\*(C`probe\*(C'\fR method. .PP The \f(CW\*(C`nowarnings\*(C'\fR argument instructs Parse::DMIDecode not to emit any parser warnings. .SS "probe" .IX Subsection "probe" .Vb 1 \& $decoder\->probe; .Ve .PP This method executes an active probe to gather information using the \&\fIdmidecode\fR command. It does not accept any arguments. .SS "parse" .IX Subsection "parse" .Vb 2 \& my $raw = qx(sudo /usr/sbin/dmidecode); \& $decoder\->prase($raw); .Ve .PP This method is a passive alternative to the \f(CW\*(C`probe\*(C'\fR method. It accepts a single string argument which should contain output from the \fIdmidecode\fR command, which it will parse. .SS "keyword" .IX Subsection "keyword" .Vb 1 \& my $serial_number = $decoder\->keyword("system\-serial\-number"); .Ve .SS "keywords" .IX Subsection "keywords" .Vb 2 \& my @keywords = $decoder\->keywords; \& my @bios_keywords = $decoder\->keywords("bios"); \& \& for my $keyword (@bios_keywords) { \& printf("%s => %s\en", \& $keyword, \& $decoder\->keyword($keyword) \& ); \& } .Ve .SS "handle_addresses" .IX Subsection "handle_addresses" .Vb 1 \& my @addresses = $decoder\->handle_addresses; .Ve .SS "get_handles" .IX Subsection "get_handles" .Vb 1 \& use Parse::DMIDecode::Constants qw(@TYPES); \& \& # Available groups to query: bios, system, baseboard, \& # chassis, processor, memory, cache, connector, slot \& for my $handle ($decoder\->get_handles( group => "memory" )) { \& printf(">> Found handle at %s (%s):\en%s\en", \& $handle\->address, \& $TYPES[$handle\->dmitype], \& $handle\->raw \& ); \& } .Ve .PP See Parse::DMIDecode::Handle for accessor method documentation for handle objects. .SS "smbios_version" .IX Subsection "smbios_version" .Vb 1 \& my $smbios_version = $decoder\->smbios_version; .Ve .PP Returns the \s-1SMBIOS\s0 version number. .SS "dmidecode_version" .IX Subsection "dmidecode_version" .Vb 1 \& my $dmidecode_version = $decoder\->dmidecode_version; .Ve .PP Returns the version number of the copy of \fIdmidecode\fR that was used to create the source data that was parsed. This value may not be available when using older versions of \fIdmidecode\fR. .SS "table_location" .IX Subsection "table_location" .Vb 1 \& my $memory_address = $decoder\->table_location; .Ve .SS "structures" .IX Subsection "structures" .Vb 1 \& my $total_structures = $decoder\->structures; .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" Parse::DMIDecode::Handle, Parse::DMIDecode::Constants, Parse::DMIDecode::Examples, examples/*.pl, , , , , , \&\fBbiosdecode\fR\|(8), \fBdmidecode\fR\|(8), \fBvpddecode\fR\|(8) .SH "VERSION" .IX Header "VERSION" \&\f(CW$Id:\fR DMIDecode.pm 1004 2007\-03\-11 12:43:25Z nicolaw $ .SH "AUTHOR" .IX Header "AUTHOR" Nicola Worthington .PP .PP If you like this software, why not show your appreciation by sending the author something nice from her Amazon wishlist ? .PP .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2006,2007 Nicola Worthington. .PP This software is licensed under The Apache Software License, Version 2.0. .PP