---
name: "Catmandu::Fix::marc_paste"
section: "3pm"
platform: "linux"
package: "libcatmandu-marc-perl"
version: "1.320-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catmandu::Fix::marc_paste"
---

# Catmandu::Fix::marc\_paste(3pm)

paste a MARC structured field back into the MARC record

## NAME

Catmandu::Fix::marc\_paste - paste a MARC structured field back into the MARC record

## SYNOPSIS

```
    # Copy and paste to the end of the record
    marc_copy(001, fixed001)
    set_fieldfixed001.$first.tag,002)
    marc_paste(fixed001)
    # Copy and paste in place (rename a field)
    do marc_each(var:this)
      if all_match(this.tag,001)
        # Change it
        set_field(this.tag,002)
        # Paste it back into the record
        marc_paste(this)
      end
    end
```

## DESCRIPTION

Paste a MARC stucture created by Catmandu::Fix::marc\_struc back at the end of a MARC record.

## METHODS

### marc\_paste(JSON\_PATH, \[at: MARC\_PATH , \[equals: REGEX\]\])

Paste a MARC struct PATH back in the MARC record. By default the MARC structure will be pasted at the end of the record. Optionally provide an `"at"` option to set the MARC field after which the structure needs to be pasted. Optionally provide a regex that should match the content of the `"at"` field.

The `"equals"` parameter requires an `"at"` parameter. When both are provided, then the value of JSON\_PATH will only be pasted if the string value of the MARC\_PATH in `"at"` matches the regular expression `"equals"`.

```
    # Paste mycopy at the end of the record
    marc_paste(mycopy)
    # Paste mycopy after the last 300 field
    marc_paste(mycopy, at:300)
    # Paste mycopy after the last 300 field with indicator1 = 1
    marc_paste(mycopy, at:300[1])
    # Paste mycopy after the last 300 field which has an 'a' subfield
    marc_paste(mycopy, at:300a)
    # Paste mycopy after the last 300 field which has an 'a' subfield equal to 'ABC'
    marc_paste(mycopy, at:300a, equals:'^ABC$')
    # Paste mycopy after the last 300 field with all concatinated subfields equal to 'ABC'
    marc_paste(mycopy, at:300, equals:'^ABC$')
```

## INLINE

This Fix can be used inline in a Perl script:

```
    use Catmandu::Fix::marc_copy as => 'marc_copy';
    use Catmandu::Fix::marc_paste as => 'marc_paste';
    my $data = { record => ['650', ' ', 0, 'a', 'Perl'] };
    $data = marc_copy($data,'650','subject');
    $data = marc_paste($data,'subject');
```

## SEE ALSO

- •

  Catmandu::Fix::marc\_copy

- •

  Catmandu::Fix::marc\_cut

## LICENSE AND COPYRIGHT

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.
