{"id":20500500,"url":"https://github.com/poti1/data-trace","last_synced_at":"2026-01-20T09:34:47.528Z","repository":{"id":61662081,"uuid":"542955186","full_name":"poti1/data-trace","owner":"poti1","description":"Trace when a data structure gets updated.","archived":false,"fork":false,"pushed_at":"2025-05-28T10:09:49.000Z","size":109,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-28T11:24:40.928Z","etag":null,"topics":["debugging-tool","hacktoberfest","perl","perl5"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/poti1.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-09-29T06:24:24.000Z","updated_at":"2025-05-28T10:09:52.000Z","dependencies_parsed_at":"2024-05-11T08:44:57.874Z","dependency_job_id":"302c9bba-9d06-4e93-95fd-23c562013cf2","html_url":"https://github.com/poti1/data-trace","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/poti1/data-trace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poti1%2Fdata-trace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poti1%2Fdata-trace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poti1%2Fdata-trace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poti1%2Fdata-trace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/poti1","download_url":"https://codeload.github.com/poti1/data-trace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poti1%2Fdata-trace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28600698,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T08:51:33.170Z","status":"ssl_error","status_checked_at":"2026-01-20T08:51:10.855Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debugging-tool","hacktoberfest","perl","perl5"],"created_at":"2024-11-15T18:21:04.835Z","updated_at":"2026-01-20T09:34:47.513Z","avatar_url":"https://github.com/poti1.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NAME\n\nData::Trace - Trace when a data structure gets updated.\n\n# SYNOPSIS\n\nVariable change trace:\n\n    use Data::Trace;\n\n    my $data = {a =\u003e [0, {complex =\u003e 1}]};\n\n    sub BadCall{ $data-\u003e{a}[0] = 1 }\n\n    Trace($data);\n\n    BadCall();  # Shows stack trace of where data was changed.\n\nStack trace:\n\n    use Data::Trace;\n    Trace();    # 1 level.\n    Trace(5);   # 5 levels.\n\n# DESCRIPTION\n\nThis module provides a convienient way to find out\nwhen a data structure has been updated.\n\nIt is a debugging/tracing aid for complex systems to identify unintentional\nalteration to data structures which should be treated as read-only.\n\nProbably can also create a variable as read-only in Moose and see where\nits been changed, but this module is without Moose support.\n\n# SUBROUTINES/METHODS\n\n## Trace\n\nWatch a reference for changes:\n\n    Trace( \\$scalar, @OPTIONS );\n    Trace( \\@array , @OPTIONS );\n    Trace( \\@hash , @OPTIONS );\n    Trace( $complex_data , @OPTIONS );\n\nJust a stack trace with no watching:\n\n    Trace( @OPTIONS );\n\nOptions:\n\n    -clone =\u003e 0,    # Disable auto tying after a Storable dclone.\n\n    -var =\u003e REF,    # Variable to watch.\n    REF             # Same as passing a reference.\n\n    -levels =\u003e NUM  # How many scope levels to show.\n    NUM             # Same as passing a decimal.\n\n    -raw =\u003e 1,      # Include Internal call like Moose,\n                    # and Class::MOP in a trace.\n    -NUM            # Same as passing negative number.\n\n    -message =\u003e STR # Message to use for a normal (non-\n                    # tie stack trace).\n    STR             # Same as passing anything else.\n\n    -methods =\u003e STR   # Monitors only specific methods.\n    -methods =\u003e [STR] #\n\n## \\_ProcessArgs\n\n    Allows calling Trace like:\n    Trace() and Trace(-levels =\u003e 1) to\n    mean the same.\n\n# AUTHOR\n\nTim Potapov, `\u003ctim.potapov at gmail.com\u003e`\n\n# BUGS\n\nPlease report any bugs or feature requests to [https://github.com/poti1/data-trace/issues](https://github.com/poti1/data-trace/issues).\n\nCurrently only detect `STORE` operations.\nExpand this to also detect `PUSH`, `POP`, `DELETE`, etc.\n\n# TODO\n\nConsider adding an option to have a warn message anytime a structure is FETCHed.\n\n# SUPPORT\n\nYou can find documentation for this module\nwith the perldoc command.\n\n    perldoc Data::Trace\n\nYou can also look for information at:\n\n[https://metacpan.org/pod/Data::Trace](https://metacpan.org/pod/Data::Trace)\n\n[https://github.com/poti1/data-trace](https://github.com/poti1/data-trace)\n\n# LICENSE AND COPYRIGHT\n\nThis software is Copyright (c) 2024 by Tim Potapov.\n\nThis is free software, licensed under:\n\n    The Artistic License 2.0 (GPL Compatible)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoti1%2Fdata-trace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpoti1%2Fdata-trace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpoti1%2Fdata-trace/lists"}