---
name: "Class::MakeMethods::Template::StructBuiltin"
section: "3pm"
platform: "linux"
package: "libclass-makemethods-perl"
version: "1.01-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Class::MakeMethods::Template::StructBuiltin"
---

# Class::MakeMethods::Template::StructBuiltin(3pm)

generates a wrapper around some builtin function

## NAME

Class::MakeMethods::Template::StructBuiltin - generates a wrapper around some builtin function

## SYNOPSIS

```
  use Class::MakeMethods::Template::StructBuiltin (
    -TargetClass => 'MyStat',
    builtin_isa => [
      '-{new_function}'=>'stat',
        qw/ dev ino mode nlink /
    ]
  );
```

## DESCRIPTION

This class generates a wrapper around some builtin function, storing the results in the object and providing a by-name interface.

Takes a (core) function name, and a arrayref of return position names (we will call it pos\_list).  Creates:

- new

  Calls the core func with any given arguments, stores the result in the instance.

- x

  For each member of pos\_list, creates a method of the same name which gets/sets the nth member of the returned list, where n is the position of x in pos\_list.

- fields

  Returns pos\_list, in the given order.

- dump

  Returns a list item name, item value, in order.

Example Usage:

```
  package Stat;
  use Class::MakeMethods::Template::StructBuiltin
    builtin_isa => [ '-{new_function}'=>'stat', qw/ dev ino mode nlink / ],
  package main;
  my $file = "$ENV{HOME}/.template";
  my $s = Stat->new($file);
  print "File $file has ", $s->nlink, " links\n";
```

Note that (a) the new method does not check the return value of the function called (in the above example, if `$file` does not exist, you will silently get an empty object), and (b) if you really want the above example, see the core File::stat module.   But you get the idea, I hope.
