🌐 Language Links:

Language Links:

Deutsch (Deutschland)

Beispiel für die Angabe von Deutsch (Deutschland) in der Befehlszeile...

    perl -CAS ChangeName.pm --spr de-DE

Beispiel für die Angabe von Deutsch (Deutschland) in einer unterstützten "YAML-Konfiguration“...

    Language Tag: de-DE

Beispiel für die Angabe keiner festgelegten Sprache in der Befehlszeile...

    perl -CAS ChangeName.pm --spr

Beispiel für die Angabe keiner festgelegten Sprache in einer unterstützten "YAML-Konfiguration“...

    Language Tag:

Befehlszeilen-"Optionen" haben Vorrang vor "YAML-Konfigurationen“.

DATEINAME (de-DE)

ChangeName.pm – Namen von Personen in „Dataset“-Datensätzen ändern.

SYNOPSE (de-DE)

    # Datei in der Befehlszeile ausführen:
    perl ./ChangeName.pm

    # In der Befehlszeile mit Argumenten und Flags ausführen:
    perl -CAS ./ChangeName.pm MeinArchiv bob Bobbi vorname --exakt --ausführlich --live

DATEIBESCHREIBUNG (de-DE)

Eine Datei mit mehreren Perl-Paketen, die jeweils bei einer Operation zum Ändern der mit einem EPrint verknüpften Namen innerhalb eines EPrints-Repositorys helfen.

Erfordert derzeit Perl 5.16 oder höher und wurde für EPrints 3.4.x entwickelt.

Der Hauptteil der Datei selbst legt globale Perl-Einstellungen fest, wie z. B. das zu verwendende Perl-Versions-Feature-Bundle und globale UTF-8-Kodierungsparameter, bevor eingebettete Pakete beginnen.

BEGIN-Blöcke greifen in der Ladereihenfolge ein, um sicherzustellen, dass die Variable der Zeichenkodierungsschicht zur Kompilierzeit geladen wird und dass die Sprachklassen vor allen Paketen geladen werden, die sie verwenden. Sprachklassen werden außerdem am Anfang des Skripts positioniert, sodass sie auch zur Kompilierzeit zuerst geladen werden, da einige Pakete zur Kompilierzeit aufgerufen werden und sie benötigen.

ARGUMENTE (de-DE)

ChangeName.pm betrachtet die ersten vier in der Befehlszeile angegebenen Argumente als...

  1. ...eine EPrints-Archiv-ID (MeinArchiv im obigen Beispiel "SYNOPSE (de-DE)"),
  2. ...dann einen Suchbegriff ohne Berücksichtigung der Groß-/Kleinschreibung (bob im obigen Beispiel "SYNOPSE (de-DE)"),
  3. ...dann einen Ersatz mit Berücksichtigung der Groß-/Kleinschreibung (Bobbi im obigen Beispiel "SYNOPSE (de-DE)"),
  4. ...und schließlich einen Namensteil – entweder den „Vorname“ oder den „Familienname“ („vorname“ im obigen Beispiel "SYNOPSE (de-DE)").

Kann auch eine Reihe von Flags akzeptieren (vorangestellt durch zwei Bindestriche – wie die oben gezeigten Beispiele –-exakt –-ausführlich und –-live). Die Flags und ihre Verwendung werden unter "OPTIONEN (de-DE)" beschrieben. Ihre Positionierung relativ zu den Argumenten sollte keine Rolle spielen.

OPTIONEN (de-DE)

-sp Sprachtag, --spr Sprachtag, --sprache=Sprachtag

Ermöglicht die Einstellung der Sprache über einen Sprachtag. z. B. de-DE oder en-GB.

    --spr de-DE

Eine Liste der aktuellen Sprachpakete finden Sie unter "Sprachpakete".

Eine Liste der unterstützten Sprachen und ihrer Sprachtags finden Sie unter "Language Links" (Sprachlinks).

-k /pfad/zu/yaml_konfig.yml, --konfig /pfad/zu/yaml_konfig.yml, --konfiguration=/pfad/zu/yaml_konfig.yml

Ermöglicht die Einstellung des Speicherorts einer zu verwendenden YAML-Konfigurationsdatei z. ...

    # Absoluter Pfad:
    --konfig /pfad/zu/yaml_konfig.yml

    # Relativer Pfad (relativ zum Verzeichnis, aus dem Sie den Befehl ausführen):
    --konfig yaml_konfig.yml

Siehe "YAML KONFIGURATION (de-DE)".

-li, --live

Stellt sicher, dass Änderungen wirksam werden.

Ohne dieses Flag wird das Skript standardmäßig im Probelaufmodus ausgeführt, in dem Änderungen nicht wirksam werden.

-e, -g, --exakt, --genau, --genaue

Gibt an, dass der Suchbegriff für die Suche, wenn er in der Befehlszeile angegeben wird, auch für nachfolgendes Suchen und Ersetzen als Groß-/Kleinschreibung-unabhängiger Suchwert interpretiert werden soll (Suchen innerhalb der Suchergebnisse über vollständige Übereinstimmungen, nicht über teilweise Übereinstimmungen).

Das bedeutet, dass Sie bei Verwendung dieses Flags bei der Such- und Ersetzungsoperation, die für die Suchergebnisse ausgeführt wird, nicht nach einem Suchwert gefragt werden.

Ihr allgemeiner anfänglicher Suchbegriff zum Abrufen von Suchergebnissen wird auch als Ihr nachfolgender spezifischer Suchwert für die Suche innerhalb Ihrer Suchergebnisse betrachtet, sodass dies eine exakte Suche ist (wenn auch ohne Berücksichtigung der Groß-/Kleinschreibung).

-a, --ausführl, --ausführlich

Bietet während der Operation zusätzliche aufschlussreiche Ausgaben.

-d, --debug

Zeigt während der Ausführung ausführliche und Debugmeldungen an. Zeigt außerdem zu Debugzwecken die von Data::Dumper abgeleitete Protokollausgabe an. Verwenden Sie das Flag --kein_dumper, um dies zu unterdrücken.

Wenn --ausführlich oder --stacktrace zusammen mit --debug verwendet wird, wird nach jeder Debug-Meldung auch die EPrints->trace-Ausgabe angezeigt. Verwenden Sie das Flag --kein_stacktrace, um solche Stacktrace-Informationen zu unterdrücken.

-t, -st, --trace, --stacktrace

Sollte das --debug-Flag gesetzt sein, stellt dieses --stacktrace-Flag sicher, dass neben jeder Protokollmeldung ein EPrints->trace-Stacktrace angezeigt wird, es sei denn, dieses Flag wird durch ein Flag --kein_stacktrace unterdrückt.

-keint, -kein_t, --keintrace, --kein_trace, --keinstacktrace, --kein_stacktrace

Verhindert die Anzeige von EPrints->trace-Stacktraces, die andernfalls angezeigt würden, wenn entweder das Flag --debug und das Flag --ausführlich oder das Flag --debug und das Flag --stacktrace zusammen verwendet werden.

-keind, -kein_d, --keindump, --kein_dump, --keindumper, --kein_dumper

Verhindert die Anzeige von aus Data::Dumper abgeleiteten Protokollmeldungen, wenn das --debug-Flag aktiviert ist.

YAML-KONFIGURATION (de-DE)

Die Datei ChangeName.pm hat bereits interne Konfigurationswerte festgelegt, die teilweise oder vollständig durch eine externe Konfigurationsdatei überschrieben werden können.

Eine externe Konfiguration wird automatisch aus jeder ChangeNameConfig.yml-Datei (Groß-/Kleinschreibung beachten) geladen, die sich im selben Verzeichnis wie die Datei ChangeName.pm befindet.

Alternativ können Sie eine benutzerdefinierte Konfigurationsdatei mit einem beliebigen Pfad und Dateinamen über die Option --konfig verwenden, die in "OPTIONEN (de-DE)" beschrieben wird.

Konfigurationswerte

    EPrints Perl Library Path: /opt/eprints3/perl_lib/

    Language Tag: de-DE

    Fields to Search:
        -   creators_name
        -   contributors_name
        -   editors_name

    Dataset to Use: eprint

    Force Commit Changes to Database: yes

    Search Field Match Type: IN

    Search Field Merge Type: ANY

Oben sind die derzeit unterstützten Konfigurationseinstellungen mit Beispielwerten aufgeführt. Sie können in Ihrer Konfiguration beliebig viele davon einschließen oder weglassen.

Bei den Namen der Konfigurationseinstellungen wird zwischen Groß- und Kleinschreibung unterschieden.

EPrints Perl Library Path:

Dies ist der Pfad der Perl-Bibliothek Ihrer lokalen EPrints-Repository-Installation. Normalerweise handelt es sich um einen Ordner perl_lib innerhalb des Ordners, in dem Sie Ihr EPrints-Repository installiert haben. In fast allen EPrints-Repositorien lautet er: /opt/eprints3/perl_lib/.

Wenn Sie Ihre EPrints jedoch in einem ungewöhnlichen Ordner installiert haben, möchten Sie diese Einstellung möglicherweise in: /ungewöhnlichen_ordner/eprints3/perl_lib/ ändern.

Beachten Sie, dass sowohl das E als auch das P in EPrints hier im Namen der Einstellung („EPrints Perl Library Path“) groß geschrieben werden.

Bei den Namen der Konfigurationseinstellungen wird zwischen Groß- und Kleinschreibung unterschieden.

Language Tag:

Dies ist die Sprache, die das Skript verwenden soll, ausgedrückt als Sprachtag. Eine Liste der unterstützten Sprachen, einschließlich ihrer Sprachtags, finden Sie im Abschnitt "Language Links" (Sprachlinks).

Die Sprache sollte ein einzelnes Sprach-Tag oder nichts sein.

Wenn das Feld nicht festgelegt ist, fehlt oder leer gelassen wird, wird das Skript mehrsprachig ausgeführt und verwendet alle unterstützten Sprachen.

Fields to Search:

Dies sind die Felder, die Sie innerhalb des von Ihnen gewählten Datensatztyps durchsuchen möchten. Derzeit sind die Standardsuchfelder creators_name, contributors_name und editors_name. Sie können diese nach Belieben anpassen oder die Suchfelder auf nur eines dieser Felder beschränken.

Dataset to Use:

Standardmäßig auf eprint eingestellt – kann auf jeden Datensatz eingestellt werden, in dem Sie eine Suche durchführen und Namen ändern möchten. Dieses Skript wurde nur mit dem Datensatz eprint getestet.

Force Commit Changes to Database:

Nimmt ein yes oder y (ohne Berücksichtigung der Groß-/Kleinschreibung) an, um ein Commit zu erzwingen, oder etwas anderes (wie z. B. no), um ein Commit nicht zu erzwingen.

Manchmal ist ein erzwungenes Commit erforderlich, damit Ihre Änderungen wirksam werden.

Search Field Match Type:

Dies ist hier online dokumentiert: https://wiki.eprints.org/w/API:EPrints/Search/Field#DESCRIPTION und kann einen der folgenden Werte haben:

IN

(Abkürzung für Index). Behandeln Sie den Wert als eine Liste von durch Leerzeichen getrennten Wörtern. Suchen Sie im Volltextindex nach jedem einzelnen. Bei Betreffzeilen müssen Sie diese Betreffzeilen-IDs oder die ihrer Nachkommen im Betreffbaum abgleichen.

EQ

(Abkürzung für „equal“ [gleich]). Behandeln Sie den Wert als einzelne Zeichenfolge. Passen Sie nur die Felder an, die diesen Wert haben.

EX

(Abkürzung für „exakt“). Wenn der Wert eine leere Zeichenfolge ist, wird nach leeren Feldern gesucht, anstatt dieses Suchfeld zu überspringen. Bei Betreffzeilen werden die angegebenen Betreffzeilen abgeglichen, nicht jedoch deren Nachkommen.

SET

Wenn der Wert nicht leer ist.

NO

Dies wird normalerweise nur intern verwendet und führt dazu, dass das betreffende Suchfeld keine Treffer liefert. Dies geschieht, ohne dass Verarbeitungsaufwand für eine gründliche Suche betrieben wird.

Search Field Merge Type:

Dies ist auch hier online dokumentiert: https://wiki.eprints.org/w/API:EPrints/Search/Field#DESCRIPTION und kann einen der folgenden Werte haben:

ALL

Ordnen Sie ein Element nur dann zu, wenn alle durch Leerzeichen etrennten Wörter mit dem Element übereinstimmen.

ANY

Stimmt mit einem Element überein, wenn eines der durch Leerzeichen getrennten Wörter innerhalb des Werts mit dem Element übereinstimmt.

Beachten Sie, dass diese Einstellung keine Auswirkungen auf EX-Übereinstimmungen hat, die immer mit dem gesamten Wert übereinstimmen.

Beispiel einer YAML-Konfiguration

Sie können das folgende YAML-Beispiel als Vorlage für Ihre eigene externe ChangeNameConfig.yml-Datei (oder eine individuell benannte .yml-Konfigurationsdatei) verwenden und es dann nach Bedarf anpassen:

    # Dies ist eine YAML-Konfigurationsdatei:
    %YAML 1.2
    # Drei Bindestriche, um ein neues YAML-Dokument zu beginnen.
    ---

    EPrints Perl Library Path: /opt/eprints3/perl_lib/

    Language Tag: de-DE

    Fields to Search:
        -   creators_name
        -   contributors_name
        -   editors_name

    Dataset to Use: eprint

    Force Commit Changes to Database: yes

    # Geben Sie für das Obige ein „yes“ oder „y“
    # (ohne Berücksichtigung der Groß-/Kleinschreibung) ein,
    # um das Festschreiben zu erzwingen,
    # oder etwas anderes (z. B. „no“),
    # um das Festschreiben nicht zu erzwingen.

    Search Field Match Type: IN

    Search Field Merge Type: ANY

    # Der Parameter
    # „Search Field Match Type“ (Suchfeld-Übereinstimmungstyp)
    # kann einer der folgenden sein:

    # IN
    # (Abkürzung für Index).
    # Behandeln Sie den Wert als eine Liste von durch Leerzeichen getrennten Wörtern.
    # Suchen Sie im Volltextindex nach jedem einzelnen.
    # Bei Betreffzeilen müssen Sie diese Betreffzeilen-IDs
    # oder die ihrer Nachkommen im Betreffbaum abgleichen.

    # EQ
    # (Abkürzung für „equal“ [gleich]).
    # Behandeln Sie den Wert als einzelne Zeichenfolge.
    # Passen Sie nur die Felder an, die diesen Wert haben.

    # EX
    # (Abkürzung für „exakt“).
    # Wenn der Wert eine leere Zeichenfolge ist,
    # wird nach leeren Feldern gesucht,
    # anstatt dieses Suchfeld zu überspringen.
    # Bei Betreffzeilen werden
    # die angegebenen Betreffzeilen abgeglichen,
    # nicht jedoch deren Nachkommen.

    # SET
    # Wenn der Wert nicht leer ist.

    # NO
    # Dies wird normalerweise
    # nur intern verwendet
    # und führt dazu,
    # dass das betreffende
    # Suchfeld keine Treffer
    # liefert.
    # Dies geschieht,
    # ohne dass Verarbeitungsaufwand
    # für eine gründliche
    # Suche betrieben wird.

    # Der Parameter
    # „Search Field Merge Type“ (Suchfeld-Zusammenführungstyp)
    # kann einer der folgenden sein:

    # ALL
    # Ordnen Sie ein Element nur dann zu,
    # wenn alle durch Leerzeichen 
    # etrennten Wörter
    # mit dem Element übereinstimmen.

    # ANY
    # Stimmt mit einem Element überein,
    # wenn eines der durch Leerzeichen
    # getrennten Wörter innerhalb des
    # Werts mit dem Element übereinstimmt.

    # „Search Field Merge Type“ (Suchfeld-Zusammenführungstyp) hat
    # keine Auswirkungen auf EX-Übereinstimmungen,
    # die immer mit dem gesamten Wert übereinstimmen.

    ...
    # Drei Punkte zum Beenden des aktuellen YAML-Dokument.

SPRACHPAKETE (de-DE)

Diese Klassen enthalten ein sprachspezifisches Lexikon mit lokalisierten Konfigurationen, Token und Phrasen. Zusätzlich können in diesen Klassen auch POD-Übersetzungen enthalten sein.

ChangeName::Languages::de_de

Deutsch (Deutschland).

ChangeName::Languages::en_gb

Englisch (Vereinigtes Königreich).

PERL-PAKETE (de-DE)

ChangeName::Utilities (de-DE)

Paket, das nützliche Dienstprogramme und Funktionen speichert, die von anderen Paketen in dieser ChangeName.pm-Datei verwendet werden.

ChangeName::Config::YAML (de-DE)

Paket, das YAML-formatierte Standardkonfigurationseinstellungen speichert. Wird verwendet, wenn keine externe .yml-Datei bereitgestellt wird, oder für Standardwerte, falls eine externe Datei eine Einstellung auslässt.

ChangeName::Config (de-DE)

Paket, das die Konfiguration lädt.

ChangeName::Languages ​​(de-DE)

Locale::Maketext-Projektklasse zum Laden von Sprachklassen.

ChangeName::Language (de-DE)

Unsere eigene Sprachklasse für die Sprache, die wir verwenden werden. Ihr language_handle-Attribut kann undefiniert bleiben, um alle unterstützten Sprachen zu verwenden.

ChangeName::Log (de-DE)

Ermöglicht die Erstellung eines ChangeName::Log-Objektinstanz, das über Methoden zum Protokollieren von ausführlichen, debug, stacktrace und Data::Dumper-Ausgaben in die logmethode eines EPrints::Repository oder STDERR verfügt.

ChangeName::Modulino (de-DE)

Führt das Skript über die Befehlszeile aus oder startet den Vorgang über eine neue Modulino-Klasseninstanz.

ChangeName::Operation (de-DE)

Führt den Vorgang zur Namensänderung aus.

AUTOR (de-DE)

Andrew Mehta

COPYRIGHT UND LIZENZ (de-DE)

Copyright ©2024, Andrew Mehta.

Dieses Programm ist kostenlose Software; Sie können es unter denselben Bedingungen wie Perl 5.40.0 weitergeben und/oder ändern. Weitere Einzelheiten finden Sie im vollständigen Text der Lizenzen über perlartistic und perlgpl. Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein wird, jedoch ohne jegliche Garantie; ohne die implizite Garantie der Marktgängigkeit oder Eignung für einen bestimmten Zweck.

English (United Kingdom)

Example declaring English (United Kingdom) at the commandline...

    perl -CAS ChangeName.pm --lang en-GB

Example declaring English (United Kingdom) within supported "YAML configuration"...

    Language Tag: en-GB

Example declaring no set language at the commandline...

    perl -CAS ChangeName.pm --lang

Example declaring no set language within supported "YAML configuration"...

    Language Tag:

Commandline "options" take precedence over "YAML configurations".

FILENAME (en-GB)

ChangeName.pm - change people's names on dataset records.

SYNOPSIS (en-GB)

    # Run file at the command line:
    perl ./ChangeName.pm

    # Run at the command line with arguments and flags:
    perl -CAS ./ChangeName.pm MyArchive bob Bobbi given --exact --verbose --live

FILE DESCRIPTION (en-GB)

A file containing multiple Perl packages, that each help in an operation, for changing the names associated with an EPrint, within an EPrints repository.

Currently requires Perl 5.16 or higher, and designed with EPrints 3.4.x in mind.

The main body of the file itself, sets global Perl settings, such as the Perl version feature bundle to use, and UTF-8 encoding globals, before any embedded packages begin.

BEGIN blocks intervene in load order, to ensure the encoding layer variable is loaded at compile time, and that the language classes are loaded before any packages that use them. Language classes are also positioned at the top of the script, so they are loaded first during compile time also, as some packages will be called at compile time, and need them.

ARGUMENTS (en-GB)

ChangeName.pm considers the first four arguments provided at the commandline to be...

  1. ...an EPrints archive ID (MyArchive in the "SYNOPSIS (en-GB)" example above),
  2. ...then a case insensitive search term (bob in the "SYNOPSIS (en-GB)" example above),
  3. ...then a case sensitive replacement (Bobbi in the "SYNOPSIS (en-GB)" example above),
  4. ...and finally a name part - either "given" name or "family" name (given in the "SYNOPSIS (en-GB)" example above).

Can also accept a number of flags (preceded by two dashes - such as the --exact --verbose and --live examples shown above). The flags and their usage are described under "OPTIONS (en-GB)". Their positioning relative to the arguments shouldn't matter.

OPTIONS (en-GB)

-la tag, --lang tag, --language=tag

Allows setting of language, by way of a language tag. i.e. en-GB, or de-DE.

    --lang en-GB

See "Language Packages" for list of current language packages.

See "Language Links" for list of supported languages and their language tags.

-c /path/to/yaml_config.yml, --config /path/to/yaml_config.yml, --configuration=/path/to/yaml_config.yml

Allows setting the location of a YAML configuration file to use. i.e. ...

    # Absolute path:
    --config /path/to/yaml_config.yml

    # Relative path (relative to the directory you run the command from):
    --config yaml_config.yml

See "YAML CONFIGURATION (en-GB)".

-li, --live

Ensures changes take effect.

Without this flag, the script will run in dry run mode by default, where changes do not take effect.

-e, --exact

Indicates the search term, if provided on the command line, should be interpreted as a case insensitive find value too (finding via full matches, and not partial matches).

This means that when using this flag, you will not be prompted for a find value, in the find and replace operation on the search results. Your search term will be considered your find value too, making this an exact search (albeit case insensitive).

-v, --verbose

Provides additional insightful output during the operation.

-d, --debug

Shows verbose and debugging messages during execution. Also shows Data::Dumper derived log output for debugging purposes. Use the --no_dumper flag to suppress this.

When --verbose or --trace is used alongside --debug, EPrints->trace output will also be shown after each debug message. Use the --no_trace flag to suppress such stacktrace information.

-t, --trace

Should the debug flag be set, this trace flag will ensure an EPrints->trace stacktrace is displayed alongside every log message, unless this flag is suppressed by a --no_trace flag.

-not, -no_t, --notrace, --no_trace, --nostacktrace, --no_stacktrace

Prevents the display of EPrints->trace stacktraces which would otherwise be shown when either the --debug flag and --verbose flag, or the --debug flag and --trace flag, are used together.

-nod, -no_d, --nodump, --no_dump, --nodumper, --no_dumper

Prevents the display of Data::Dumper derived log messages when the debug flag is in effect.

YAML CONFIGURATION (en-GB)

The file has internal configuration values set already, and these can be overwritten partially, or in full, by an external configuration file.

An external configuration will be automatically loaded from any ChangeNameConfig.yml file (case sensitive) found in the same directory as the ChangeName.pm file.

Alternatively, you can use a custom configuration file, with any path and filename you wish, via the --config option, described in "OPTIONS (en-GB)".

Configuration Values

    EPrints Perl Library Path: /opt/eprints3/perl_lib/

    Language Tag: en-GB

    Fields to Search:
        -   creators_name
        -   contributors_name
        -   editors_name

    Dataset to Use: eprint

    Force Commit Changes to Database: yes

    Search Field Match Type: IN

    Search Field Merge Type: ANY

Above are the currently supported configuration settings, with example values. You can include or omit as many of these as you wish, in your config.

The names of the configuration settings are case sensitive.

EPrints Perl Library Path:

This is the path of your local EPrints Repository installation's Perl Library. It is typically a perl_lib folder, within the folder you installed your EPrints Repository to. In almost all EPrints Repositories it will be: /opt/eprints3/perl_lib/.

If you have installed your EPrints to an unusual folder, however, you may wish to alter this setting to: /unusual_folder/eprints3/perl_lib/.

Note that both the E and the P in EPrints are capitalised here in the name of the setting (EPrints Perl Library Path).

Language Tag:

This is the language the script is to use, expressed as a language tag. See "Language Links:" section for a list of supported languages, including their language tags.

The language, should be a single language tag, or nothing.

If the field is not set, missing, or left blank, the script will run multilingually, using all supported languages.

Fields to Search:

These are the dataset fields you wish to search. Currently, the default fields to search are creators_name, contributors_name and editors_name and you are free to customise these how you wish, or restrict the fields searched to only one of these.

Dataset to Use:

Defaults to eprint - can be set to any dataset you wish to perform a search on, and change names in. This script has only been tested with the eprint dataset.

Force Commit Changes to Database:

Takes a yes or y (case insensitive) to force commit, or anything else (such as no) to not force commit.

Force-committing is sometimes necessary to have your changes take effect.

Search Field Match Type:

This is documented online here: https://wiki.eprints.org/w/API:EPrints/Search/Field#DESCRIPTION and can be any one of the following values:

IN

(Short for index). Treat the value as a list of whitespace-separated words. Search for each one in the full-text index. In the case of subjects, match these subject ids or those of any of their descendants in the subject tree.

EQ

(Short for equal). Treat the value as a single string. Match only fields which have this value.

EX

(Short for exact). If the value is an empty string then search for fields which are empty, as oppose to skipping this search field. In the case of subjects, match the specified subjects, but not their descendants.

SET

If the value is non-empty.

NO

This is only really used internally, it means the search field will just fail to match anything without doing any actual searching.

Search Field Merge Type:

This is also documented online here: https://wiki.eprints.org/w/API:EPrints/Search/Field#DESCRIPTION and can be any one of the following values:

ALL

Match an item only if all of the space-separated words in the value match.

ANY

Match an item if any of the space-separated words in the value match.

Note that this setting has no effect on EX matches, which always match the entire value.

Example YAML Configuration

You can use the following example YAML as a template for your own external ChangeNameConfig.yml file (or custom named .yml config file), and then customise it as required:

    # This is a YAML Configuration File:
    %YAML 1.2
    # Three dashes to start new YAML document.
    ---

    EPrints Perl Library Path: /opt/eprints3/perl_lib/

    Language Tag: en-GB

    Fields to Search:
        -   creators_name
        -   contributors_name
        -   editors_name

    Dataset to Use: eprint

    Force Commit Changes to Database: yes

    # For the above, provide a yes or y (case insensitive) to force commit,
    # or anything else (such as no) to not force commit.

    Search Field Match Type: IN

    Search Field Merge Type: ANY

    # The "Search Field Match Type" parameter which can be one of:

    # IN
    # (short for index)
    # Treat the value as a list of whitespace-separated words. Search for each one in the full-text index.
    # In the case of subjects, match these subject ids or those of any of their descendants in the subject tree.

    # EQ
    # (short for equal)
    # Treat the value as a single string. Match only fields which have this value.

    # EX
    # (short for exact)
    # If the value is an empty string then search for fields which are empty, as oppose to skipping this search field.
    # In the case of subjects, match the specified subjects, but not their descendants.

    # SET
    # If the value is non-empty.

    # NO
    # This is only really used internally, it means the search field will just fail to match anything without doing any actual searching.

    # The "Search Field Merge Type" parameter can be one of:

    # ALL
    # Match an item only if all of the space-separated words in the value match.

    # ANY
    # Match an item if any of the space-separated words in the value match.

    # "Search Field Merge Type" has no effect on EX matches, which always match the entire value.

    ...
    # Three dots to end current YAML document.

LANGUAGE PACKAGES (en-GB)

These classes contain a language specific lexicon, containing localised configurations, tokens, and phrases. Additionally POD translations may also be included in these classes.

ChangeName::Languages::de_de

German (Germany).

ChangeName::Languages::en_gb

English (United Kingdom).

PERL PACKAGES (en-GB)

ChangeName::Utilities (en-GB)

Package storing useful utilities and functions, used by other packages in this ChangeName.pm file.

MODULE NAME (ChangeName::Utilities en-GB)

ChangeName::Utilities - a collection of useful utilities and functions.

VERSION (ChangeName::Utilities en-GB)

v2.0.5

SYNOPSIS (ChangeName::Utilities en-GB)

    # Name the utilities you wish to use...
    use ChangeName::Utilities qw(
        method_1
        method_2
    );

    # Then use them...
    my  $result =  method_1($required_values);

DESCRIPTION (ChangeName::Utilities en-GB)

Contains exportable subroutines that are useful utilities and functions for other packages in the ChangeName:: namespace.

METHODS (ChangeName::Utilities en-GB)

----------------

validate_class (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    $self->validate_class($thing => 'Desired::Class::Name');
    # ...or...
    validate_class($self, $thing => 'Desired::Class::Name');

Takes an object, and a class name, as arguments - separated by a comma or fat comma as you wish.

Returns undef if the $thing is not of the desired class name. Returns $thing if the $thing is a valid class name.

Supports "ChangeName::Log (en-GB)" if $self has a logger method that returns a ChangeName::Log instance whose ready method returns true, indicating it is ready to begin being used to log with.

----------------

valid_object (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    $self->valid_object($thing);
    # ...or...
    valid_object($self, $thing);

Takes a variable, and checks it is defined, and blessed into a class.

Returns undef if not defined, or not blessed into a class; otherwise, returns $thing.

Supports "ChangeName::Log (en-GB)" if $self has a logger method that returns a ChangeName::Log instance whose ready method returns true, indicating it is ready to begin being used to log with.

----------------

get_options (en-GB)

----------------

Example:

    $self->get_options(
        commandline_arguments   =>  $array_reference_1,
        expected_options        =>  $hash_reference_of_hash_references_1,
    );

Convenience method. Takes a hash and passes it on to "process_commandline_arguments" and returns the first result - i.e. just an options hash reference, and not an arguments hash reference nor a no_input boolean flag.

See "process_commandline_arguments" for more information.

----------------

get_arguments (en-GB)

----------------

Example:

    $self->get_arguments(
        commandline_arguments   =>  $array_reference_1,
        expected_arguments      =>  $array_reference_2,
    );

Convenience method. Takes a hash and passes it on to "process_commandline_arguments" and returns only the second result - i.e. just an arguments hash reference, and not an options hash reference nor a no_input boolean flag.

See "process_commandline_arguments" for more information.

----------------

process_commandline_arguments (en-GB)

----------------

Takes a hash of arguments, as follows...

    $self->process_commandline_arguments(
        commandline_arguments   =>  $array_reference_1,
        expected_options        =>  $hash_reference_of_hash_references_1,
        expected_arguments      =>  $array_reference_2,
    );

Example values are:

    my  $array_reference_1      =   \@ARGV; # Special global variable containing commandline arguments.

    my  $hash_reference_of_hash_references_1 = {
            simple_options      =>  {
                help            =>  0,
            },
            optional_strings    =>  {
                language        =>  undef,
            },
            negatable_options   =>  {
                verbose         =>  0,
            },
            incremental_options =>  {
                trace           =>  0,
            },
    };

    my  $array_reference_2      =   # Names for your arguments 
                                    # in order they appear:
                                    [
                                        'archive_id',
                                        'search',
                                        'replace',
                                        'part',
                                    ];

You can see that the hash reference is expected to contain separate nested hash references, for each type of supported option. Presently supported are...

Supports multi-language options, where Locale::Maketext Lexicon key and value conventions, for localising options within a specific language package are as follows:

    # Key                       # Value
    'options.option_name'   =>  'option_name alternative_option_name short_option_name',

For example...

    # Key                       # Value
    'options.config'        =>  'config configuration conf',

Or simply...

    # Key                       # Value
    'options.verbose'       =>  'verbose',

The key always remains English. The value should be localised to the language. The value string can contain as many space separated alternatives as desired.

Returns a list containing an options hash reference, an arguments hash reference, and a no_input flag.

    my ($options, $arguments, $no_input)    =   $self->process_commandline_arguments(%hash);

The $no_input flag should be considered a boolean, as it returns a true value if there are no arguments after options have been processed, and it returns a false value if there actually are arguments left, after options have been processed, and before arguments have been processed.

Designed to be used with object instances. So...

    # Can be written as either...
    $self->process_commandline_arguments(%hash);
    # ...or...
    process_commandline_arguments($self, %hash);

Supports "ChangeName::Log (en-GB)" if $self has a logger method that returns a ChangeName::Log instance whose ready method returns true, indicating it is ready to begin being used to log with.

----------------

list_to_regex_logical_or_string (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    $self->list_to_regex_logical_or_string(@list);
    # ...or...
    list_to_regex_logical_or_string($self, @list);

Takes a list, makes each defined element regex safe, and joins it by the pipe character "|".

Returns the joined string. This is of use within a regex "Logical Or" grouping, and so as to allow for easier appending to the string with further alternatives, grouping brackets are not included in the output, and will need to be added, to form a grouping.

For example:

    my  $acceptable_input           =   $self->list_to_regex_logical_or_string(
                                            'given',
                                            'family',
                                        );
    my  $matches_acceptable_input   =   qr/^($acceptable_input)$/;

As you see in the above example, the result is encased within brackets, to form a "Logical Or" grouping from the string.

----------------

is_populated_array_ref (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    my  $valid_value    =   $self->is_populated_array_ref($value);
    # ...or...
    my  $valid_value    =   is_populated_array_ref($self, $value);

    # Allowing for...
    if ($valid_value) {
        # do stuff - confident we have a populated array reference.
    };

Takes a $value. If the $value is found to be an array reference populated with one or more values (warning - these array values can be undef) then it will return the original $value passed in.

If the passed in $value is found to not be an array reference, or to be an array reference that is empty, this method will return an undef value.

----------------

is_populated_hash_ref (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    my  $valid_value    =   $self->is_populated_hash_ref($value);
    # ...or...
    my  $valid_value    =   is_populated_hash_ref($self, $value);

    # Allowing for...
    if ($valid_value) {
        # do stuff - confident we have a hash reference with at least one hash key.
    };

Takes a $value. If the $value is found to be a hash reference populated with at least one key (warning - does not check for a hash value paired with the hash key) then it will return the original $value passed in.

If the passed in $value is found to not be a hash reference, or to be a hash reference without any hash keys, this method will return an undef value.

----------------

is_populated_scalar_ref (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    my  $valid_value    =   $self->is_populated_scalar_ref($value);
    # ...or...
    my  $valid_value    =   is_populated_scalar_ref($self, $value);

    # Allowing for...
    if ($valid_value) {
        # do stuff - confident we have a scalar
        # that dereferences to a true or zero value
        # - i.e. not an empty string, nor undef.
    };

Takes a $value. If the $value is found to be a scalar reference populated with either a true value, or the number/character zero (i.e '0') then it will return the original $value passed in.

If the passed in $value is found to not be a scalar reference, or to be a scalar reference that returns false and is not the number/character zero ('0'), then this method will return an undef value.

----------------

is_true_or_zero (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    my  $validated_value    =   $self->is_true_or_zero($value)? $value:
                                undef;
    # ...or...
    my  $validated_value    =   is_true_or_zero($self, $value)? $value:
                                undef;

    # Allowing for...
    if ($validated_value) {
        # do stuff - confident we have a string
        # that contains either a true value
        # or the number/character zero (0).
    };

Takes a $value. Checks it is defined and true, or defined and the number/character zero ('0').

Returns a boolean value evaluating to true or false, depending on if these conditions have been met or not.

Warning - does not currently return the original $value. This behaviour may change in a future update, to be more in keeping with other methods in this class.

----------------

chunkify (en-GB)

----------------

Designed to be used with object instances. So...

    # Can be written as either...
    my  @array_of_array_refs    =   $self->chunkify($eprints_list);
    # ...or...
    my  @array_of_array_refs    =   chunkify($self, $eprints_list);

This method, can help reduce processing strain, by breaking down an EPrints::List object into "chunks" of no more than 100 list items, using EPrints::List's slice method.

A different chunk size limit to 100 can also be provided by passing in a number after the list object.

For example, to use chunks of no more than 50 items...

    my  @array_of_array_refs    =   $self->chunkify($eprints_list, 50);

You can also omit the expected $eprints_list if $self has a get_list_of_results method that retrieves a valid EPrints::List object.

For example:

    foreach my $current_chunk_of_100_results ($self->chunkify) {
        # Do something with no more than 100 results at a time,
        # from the list of results returned by
        # the $self->get_list_of_results method.
    }

Returns an array of array references.

----------------

stringify_array_ref (en-GB)

----------------

Convert an array reference to a text string, consisting of the items separated by a universal separator.stringify_array_ref localisation value.

    my  $array_reference    =   [1,2,3];
    $self->stringify_array_ref($array_reference);   # Outputs "1, 2, 3"
                                                    # when separator.stringify_array_ref language token
                                                    # is set to a comma and a space.

Requires $self to have a language method that returns a "ChangeName::Language" instance with a localise method.

Also expects a (considered to be universal to all languages) separator.stringify_array_ref Lexicon key to be set in the "ChangeName::Languages" base class for language classes.

ChangeName::Config::YAML (en-GB)

Package storing YAML formatted default configuration settings. Used if no external .yml file is provided, or for default values should any external file omit a setting.

MODULE NAME (ChangeName::Config::YAML en-GB)

ChangeName::Config::YAML - Class containing default configuration settings for ChangeName.pm in YAML format.

VERSION (ChangeName::Config::YAML en-GB)

v2.0.5

SYNOPSIS (ChangeName::Config::YAML en-GB)

    use YAML::Tiny;
    use ChangeName::Config::YAML;

    my  $config =    Load(ChangeName::Config::YAML::data);

DESCRIPTION (ChangeName::Config::YAML en-GB)

Class containing default configuration settings for ChangeName.pm in YAML format. Consists of a single "data" method that returns a string.

METHODS (ChangeName::Config::YAML en-GB)

----------------

data (en-GB)

----------------

Use the data method to return the yaml as a string:

    my $yaml_string =   ChangeName::Config::YAML::data;

This can then be loaded using YAML::Tiny's "Load" Function:

    use YAML::Tiny;
    my  $perl_data_structure    =   Load($yaml_string);

When external modules like YAML::Tiny are not available, you can use CPAN::Meta::YAML in Perl's Core, since it is based on YAML::Tiny. Bear in mind, CPAN::Meta::YAML is only ever envisaged to support CPAN metadata files, and may not support the full YAML standard.

    use CPAN::Meta::YAML qw(Load);

    my  $yaml_string            =   ChangeName::Config::YAML::data;
    my  $perl_data_structure    =   Load($yaml_string);

These internal YAML configuration settings for ChangeName.pm can easily be customised with the use of external YAML files. See "YAML CONFIGURATION (en-GB)" for more information on this.

This data method contains the default fallback configuration settings for the ChangeName.pm modulino file, so should not be edited to customise settings, and instead only be edited to change the fallback defaults the file uses, when external customisations are lacking, or relevant commandline "options" are not specified.

ChangeName::Config (en-GB)

Package that loads configuration.

ChangeName::Languages (en-GB)

Locale::Maketext project class for loading language classes.

ChangeName::Language (en-GB)

Our own language class for the language we will use. Its language_handle attribute can be left undefined to use all supported languages.

ChangeName::Log (en-GB)

Allows for creating a ChangeName::Log object instance that has methods related to logging verbose, debug, stacktrace, and Data::Dumper output to an EPrints::Repository's log method, or STDERR.

METHODS (ChangeName::Log en-GB)

----------------

ready (en-GB)

----------------

Checks if the Log object is ready for use in logging.

Presently the readiness checks include checking that the instance has a valid "ChangeName::Language" object for its language attribute.

The definition of readiness may change in future, and what will be constant always is that ready is intended to mean the object instance is ready for use - i.e. for having debug, verbose or dumper method calls.

ChangeName::Modulino (en-GB)

Runs the script from the commandline, or starts the operation via a new Modulino class instance.

ChangeName::Operation (en-GB)

Performs the change name operation.

MODULE NAME (ChangeName::Operation en-GB)

ChangeName::Operation - changes the name of a dataset record.

VERSION (ChangeName::Operation en-GB)

v2.0.5

SYNOPSIS (ChangeName::Operation en-GB)

    use ChangeName;

    my $object = ChangeName::Operation->new(@object_params);

DESCRIPTION (ChangeName::Operation en-GB)

Contains methods that are part of the process of changing a name of a dataset record.

Loads the class when used in another script.

    # Use in a unit test or other Perl Script:
    use ChangeName;
    
    my $object = ChangeName::Operation->new(@object_params);

See "new (ChangeName::Operation en-GB)" method for info on acceptable object parameters.

CLASS METHODS (ChangeName::Operation en-GB)

----------------

start (en-GB)

----------------

    $class->start(%object_params);

The code in this class method, can serve as an example of how to use the object.

This method is equivalent to the following method chain:

    # Construct new object, and begin program flow...
    ChangeName::Operation->new(@object_params)->search->prepare->display->confirm->change->finish;

This start method constructs a new ChangeName::Operation object instance from the class (using the object parameters passed in and the "new" constructor)>, upon which the program flow methods are then called, like so...

CONSTRUCTORS (ChangeName::Operation en-GB)

----------------

new (ChangeName::Operation en-GB)

----------------

    # Construct new object, and begin program flow...
    my  $object =   ChangeName::Operation->new(@object_params);

Accepts parameters required for a new ChangeName::Operation, and returns a new ChangeName::Operation object, upon which program flow methods or setters and getters, can be called.

TODO - detail the object parameters accepted.

INSTANCE METHODS (ChangeName::Operation en-GB)

----------------

search (en-GB)

----------------

    # Construct an object, and populate its 
    my  $object  =   ChangeName::Operation->new(@object_params)->search;

Performs an EPrints search, according to values set during ChangeName::Operation object construction.

Returns the initial ChangeName::Operation object, now with list_of_results and records_found object attributes set.

----------------

prepare (en-GB)

----------------

    # Prepare for performing a find and replace operation... 
    my  $object  =   ChangeName::Operation->new(@object_params)->search->prepare;

Should search results have been retrieved (will return prematurely if not), it will process the search results in order to generate useful lists, and then attempt to refine the search down by setting or prompting for a specific name part.

If find and replace values have not already been set, it will prompt the user for them too.

----------------

display (en-GB)

----------------

To do.

----------------

confirm (en-GB)

----------------

To do.

----------------

change (en-GB)

----------------

To do.

----------------

finish (en-GB)

----------------

To do.

AUTHOR (en-GB)

Andrew Mehta

COPYRIGHT AND LICENSE (en-GB)

Copyright ©2024, Andrew Mehta.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5.40.0. For more details, see the full text of the licenses via perlartistic and perlgpl. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.